2

我有一个model

window.LayerModel = Backbone.Model.extend({

        defaults:{
            'id':'unknow',
            'type':'unkonw',
            'preId':'unknow',

            'data': {}
        }
}

然后我定义了一个集合:

window.LayerManageCollection = Backbone.Collection.extend({
            model: LayerModel
    }) 

然后我在视图中初始化它:

        window.LayerMasterManageView = Backbone.View.extend({

              initialize: function () {
                  //here I have a gobal javascript variable named "localdata"
                  //which have 17 items in an array,each of them is object type

                  this.collection = new LayerManageCollection(localdata);
                  console.log('this collection', this.collection);
              }
}

但是集合的长度是1!,只有一个模型!,

奇怪的是,如果更改"defaults""default",收集结果是我想要的,长度为 17

为什么会这样?我怎么解决这个问题?

4

2 回答 2

4

模型的默认idAttribute值为id. 因为您在定义iddefaults将始终创建相同的模型,因为在创建重复模型时 Backbone 会悄悄地出错,这就是为什么您只看到 1 个模型的原因。

于 2012-05-25T11:26:14.290 回答
0

我认为您的问题在于您的localdata.
您有多少个对象localdata有不同id的字段
或者您应该为数组中的每个对象提供不同的 id,或者 只要您将名称更改为then 就从模型中localdata删除该id字段,因为没有默认的 id 主干将其作为新模型并因此将其添加到集合中。因此您可以更改为任何其他名称,并且它将具有相同的行为defaultsLayerModel

defaultsdefault

defaultsabc

于 2012-05-25T11:26:27.260 回答