我可以为Marionette的compositeView创建2个itemViewContainers吗?

问题描述:

我实现一个2列布局视图,如下所示:我可以为Marionette的compositeView创建2个itemViewContainers吗?

enter image description here

但是看来,当我定义我木偶复合视图,仅单个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(或任何其他类型的视图)。