在构建了几个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,但我不确定我应该如何构造它,以便每个集合都附加到该区域。任何帮助将不胜感激。
答案 0 :(得分:0)
您需要show
该地区的观点:
// tweaked region and view names for clarification
App.foosDescriptionRegion.show(foosDescriptionView);