рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдРрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдЖрддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд▓рд┐рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдХреИрд╕реНрдХреЗрдбрд┐рдВрдЧ рд╕реВрдЪреА рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрди рдЧрдИ, рдФрд░ рдПрдХ рдЖрд╕рд╛рди
рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдмреИрдХрдмреЛрди рдкрд░ рдХрдо рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ ... рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореИрдВ рдХрд╛рд░реНрдп рдХреЛ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдмреИрдХрдмреЛрди рдХреА рдЕрд▓реНрдк рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рдЬрд╣ рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред
рджреЛ рдордВрдбрд▓рд┐рдпрд╛рдВ рдмрдирд╛рдПрдВ ...
рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдмреНрд▓реЙрдХ рдЖрд░реЗрдЦ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:

рдЗрдВрдЯрд░рдлреЗрд╕ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рд╕реВрдЪреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░
SelectItemView
рджреЗрдЦреЗрдВ рдЬреЛ рдЗрд╕реЗ
SelectItemView
рд╣реИред рдЕрдЧрд▓рд╛, рддрддреНрд╡ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕реВрдЪрд┐рдпрд╛рдБ
BaseView
рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП - рдмреЗрд╕ рд╡реНрдпреВ рдХрд╛ рдореВрд▓ рджреГрд╢реНрдпред
рдХрд╛рд░реНрдп рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдореБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪрд┐рдпрд╛рдБ рдмрдирд╛рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк HTML рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
<script type="text/template" id="base-tempate"> <div class="primary"></div> <div class="secondary"></div> </script>
.secondary
рдХреЛ
.secondary
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ
.secondary
рджрд┐рдпрд╛
.secondary
, рдФрд░ рдЬрдм рд╕рдХреНрд░рд┐рдп
.primary
рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ
.primary
рдЬрд╛рдПрдЧрд╛
.primary
рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдирдИ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдПрдЧреАред
... рдФрд░ рд╣рдо рдмрд╛рдХреА рдЙрд▓реНрд▓реВ рдХреЛ рдЦрддреНрдо рдХрд░рддреЗ рд╣реИрдВ
рд▓рдЧрднрдЧ рджреЛ рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ
рдбреЗрдореЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ред рдХреЛрдб рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рджрд┐рд▓рдЪрд╕реНрдк рдЕрдВрдХ
1. рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рди рддрддреНрд╡реЛрдВ рдХреА рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪреА рд╣реИ,
ItemModel
рдореЙрдбрд▓" рдХреЛ рд▓реЗрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
initialize: function(){ if(this.get('items').length > 0){ this.set('label', this.get('label') + ' >'); }
2. рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЙрд╕ рдореЙрдбрд▓ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрд╕
itemViews
рдирд┐рд░реВрдкрдг
itemViews
рдПрдХ рд╡реНрдпреВрд╣ рдмрдирд╛рдирд╛ рдерд╛ рдЬреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
changeItem: function(){ u.each(this.itemViews, function(view){ if(view.el === this.el.options[this.el.selectedIndex]){ this.collection.selectedModel = view.model; this.collection.trigger('changeSelectedItem'); } }, this); },
3. рдЙрдкрд░реНрдпреБрдХреНрдд рдХреЛрдб рдПрдХ рд╕рд┐рдЧреНрдирд▓
changeSelectedItem
рднреЗрдЬрддрд╛ рд╣реИред
changeSelectedItem
, рдЬреЛ
BaseView
рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рддреЛ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реВрдЪреА рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ:
renderSecondary: function(){ var collection = this.collection.selectedModel.itemsCollection; var container = this.$el.find('.secondary'); container.empty(); if(collection) (new BaseView({ collection: collection })).render().$el.appendTo(container); }
рдХреЛрдб рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг
рд╕рднреА рдХреЛрдб рдЗрд╕ рдЖрд╡рд░рдг рдореЗрдВ рд╣реИрдВ:
(function(j, b, u){
рдЖрдорддреМрд░ рдкрд░ рдореИрдВ рдПрдХ рдЖрд╡рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рднреА рдХреЛрдб рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ рдФрд░ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЖрдкрдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдореЗрдВ рдЖрд▓реЛрдЪрдирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдбреЙрд▓рд░ рдФрд░ рдиреАрдЪреЗ рдХреЗ рдбреИрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдмреИрдХрдмреЛрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдХреА рд╕рдЯреАрдХрддрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рд╛рдпрдж рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реЗ рд▓рд┐рдП рд╣реИ рдпрд╣ рд╕рд╛рдл рдирд┐рдХрд▓рд╛?