用骨干木偶将多个集合渲染到区域中

时间:2014-04-21 17:56:36

标签: backbone.js marionette

在构建了几个vanilla Backbone应用程序之后,我才开始尝试使用Marionette。我突然想到了一些关于区域管理和多个馆藏的问题。

我有以下嵌套的模型和集合结构

FoosCollection
   FooModel
      BarsCollection
         BarModel

我想利用Marionette提供的所有优秀观点和布局/区域经理。但是,我需要以一种独特的方式在页面上呈现此信息。我的HTML看起来像这样:

<div id="container">
     <div id="foos-description"></div>
     <div id="bars-list"></div>
</div>

基本上,每个FooModel的一些高级信息需要呈现到foos-description元素中。然后,每个BarsCollection都需要呈现到bars-list中。结构必须使列表直接位于foos-description容器中的相应信息之下。

所以,我很乐意使用CompositeViews来解决这个问题,但看起来View / DOM元素结构也需要嵌套,就像嵌套集合/模型结构一样,这样做不会起作用就我而言。

我还添加了两个区域

App.addRegions({
  foosDescription: "#foos-description",
  barsList: "#bars-list"
});

我的初始化代码看起来像这样

App.addInitializer(function (options) {
    App.foosCollection = new FoosCollection(options.foos, {bars: options.bars});
    App.foosDescription.show(new FoosView({collection: App.foosCollection}));
    App.foosCollection.each(function(f) {
        app.barsList.show(new BarsView({collection: f.barsCollection}));
    })

});

显然这只会显示barsList区域中的最后一个BarsCollection,但我不确定我应该如何构造它,以便每个集合都附加到该区域。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要show该地区的观点:

// tweaked region and view names for clarification
App.foosDescriptionRegion.show(foosDescriptionView);