我可以为Marionette的compositeView创建2个itemViewContainers吗?
问题描述:
我实现一个2列布局视图,如下所示:我可以为Marionette的compositeView创建2个itemViewContainers吗?
但是看来,当我定义我木偶复合视图,仅单个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
本质上,我想交替插入缪斯插入我的列表模板中的'左'和'右'列。有可能在复合视图中定义?
答
您要在此处使用的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}));
}
});
答
为此,您应该使用布局而不是CompositeView。布局允许您根据需要定义多个区域,然后在每个区域中独立显示一个ItemView(或任何其他类型的视图)。