BackboneJS和Model / Collection

时间:2012-10-29 12:26:16

标签: model-view-controller backbone.js

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

1 个答案:

答案 0 :(得分:3)

骨干教程中最简单的方法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()直接读取其状态取决于您如何计算它。您的顶级模型状态将从模型集合下方的级联更新中更新。