骨干教程中描述的最简单的方法:
var Events = Backbone.Collection.extend({
initialize: function(){
this.params = new Params()
}
})
var Tournaments = Backbone.Model.extend({
initialize: function(){
this.events = new Events()
}
})
var tournaments = new Tournaments()
您可以根据需要继续嵌套。当我从事类似的任务时,我将每个集合包装在表示集合状态的模型中,并在响应集合事件时改变自身。这允许不向嵌套集合询问其在模型中具有实际状态的状态。
var CollModel = Backbone.Model.extend({
defaults: {
state = ''//or list or dict or whatever
},
initialize: function(){
this.items = new Backbone.Collection();
this.items.on('all', this.setState, this)
},
setState: function(){
this.set(
'state',
this.items.reduce(function(state, item){
/*calculate state*/
}, '')
)
},
info: function(){
return this.get('state')
}
})
因此,您可以嵌套具有类似技术的集合模型并直接通过 instance.info() 读取它们的状态,具体取决于您的计算方式。您的顶层模型状态将从底层模型集合的级联更新中更新。