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

时间:2013-04-23 05:28:12

标签: listview marionette two-column-layout

我正在实现一个2列布局视图,如下所示:

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

基本上我想在我的列表模板中交替插入muses进入'left'和'right'列。是否可以在复合视图中定义?

2 个答案:

答案 0 :(得分:1)

为此你应该使用Layout而不是CompositeView。布局允许您根据需要定义任意数量的区域,然后在每个区域中独立显示ItemView(或任何其他类型的视图)。

答案 1 :(得分:1)

您要在此处使用的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}));
  }
});