Могу ли я создать 2 itemViewContainers для составного вида Marionette?
Я реализую 2 колонки, как показано ниже:
Однако, кажется, что когда я определяю свой составной вид марионеток, допускается только один itemViewContainer.
Могу ли я сделать что-то подобное?
class List.Muse extends Marionette.ItemView
template: JST["backbone/templates/muses/index"]
class List.Muses extends Marionette.CompositeView
template: JST["backbone/templates/muses/list"]
itemView: List.Muse
itemViewContainer: ".left_col"
itemViewContainer: ".right_col"
//list template
.muses_container.two_col_wrapper.hide
.left_col
.right_col
.clearfix
.loading_container
По сути, я бы хотел чередовать вставку муз в столбцы "левый" и "правый" в шаблоне моего списка. Можно ли это определить в составном представлении?
2 ответа
Marionette
просмотреть конструкцию, которую вы хотите использовать здесь, является Layout
, Вы можете думать о Layout
как ItemView
в котором есть встроенные регионы для рендеринга подвидов. Что-то вроде этого - то, к чему вы стремитесь (в JS. Извините, я действительно не знаю CS):
List.Muses = Marionette.Layout.extend({
template: JST["backbone/templates/muses/list"],
regions : {
leftColRegion : ".left_col",
rightColRegion : ".right_col"
},
onRender : function () {
this.leftColRegion.show(new List.Muse({model : someMuseModel}));
this.rightColRegion.show(new List.Muse({model : someOtherMuseModel}));
}
});
Для этого вы должны использовать Layout вместо CompositeView. Макет позволяет вам определить столько областей, сколько вы хотите, а затем отобразить ItemView (или любой другой тип представления) независимо в каждой из этих областей.