【问题标题】:BackboneJS and Model/CollectionBackboneJS 和模型/集合
【发布时间】:2012-10-29 12:26:16
【问题描述】:
有这样的json数据:
{ tournaments: [ {
tournament_id: "..."
tournament_name: "..."
events: [ {
event_id: ...
event_name: ....
param : [ {
param_a :
param_b : ..
subparan : [ {
sub_1: 1
sub_2 : 2...
所以。我不明白 - 如何将它实现为 BackBone Collection/Model 样式?
如何处理更改 sub_1? - 收集收集收集?
【问题讨论】:
标签:
model-view-controller
backbone.js
【解决方案1】:
骨干教程中最简单的方法described:
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() 读取它们的状态,具体取决于您的计算方式。您的顶层模型状态将从底层模型集合的级联更新中更新。