1

有这样的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?- 收集收集收集?

4

1 回答 1

3

骨干教程中描述的最简单的方法:

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() 读取它们的状态,具体取决于您的计算方式。您的顶层模型状态将从底层模型集合的级联更新中更新。

于 2012-10-29T13:50:15.933 回答