这是另一个问题的详细问题(带有一些 mmy 代码):Backbone nested views
另一个问题包含我想要实现的目标的图形表示,但我认为如果我编写一些代码可以帮助我的问题得到解决。
我有一个大数组或以下结构的数据:
[
{
window: { <window-relative data>},
tabs: [
{ <tab-relative data>},
{ <tab-relative data>}
]
},
{
window: { <window-relative data>},
tabs: [
{ <tab-relative data>},
{ <tab-relative data>}
]
}
]
我不能只查询一个窗口的选项卡,也不能只查询一个窗口。数据是原样的,不可能以任何方式拆分它。让我们把它留在数据是自举的(并且它的自举方式不能改变)。
继续这个问题:我有一个 WindowsCollection:
myapp.WindowCollection = Backbone.Collection.extend({
model : WindowModel,
initialize: function(){
this.bind('reset', this.onReset);
},
onReset: function(){
// ...
}
});
还有一个看起来几乎相同的选项卡集合。我还有一个 Window 模型和一个 Tab 模型。
当页面完全加载后,运行以下代码将数据加载到窗口集合中:myapp.myWindowCollection.reset(<data here>);
我的问题是:我应该在哪里以及如何初始化选项卡集合?在```onReset`?假设我做了类似的事情
onReset: function(){
_.each(this.models, function(window_data){
t = new TabsCollection();
t.reset(window_data.tabs);
});
}
然后我的嵌套集合(Tabs 集合)将拥有正确的数据,但是我如何创建每个 Tabs 集合的视图?
我可以做:
onReset: function(){
_.each(this.models, function(window_data){
t = new TabsCollection();
t.reset(window_data.tabs);
tv = new TabsCollectionView(
collection: t;
);
});
}
但后来我会弄乱视图和收藏,我觉得这真的很乱。有没有更好的方法不涉及在同一个地方弄乱视图和集合?