2012-05-25 62 views
2

我有一个modelbackbonejs:集合初始化鉴于模块只有一个模型

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

为什么出现这种情况?我怎么解决这个问题?

+0

你以前http://stackoverflow.com/questions/10611977/backbone-js-not-rendering阅读本 – Deeptechtons

回答

4

模型的默认idAttributeid。由于您在defaults中定义了id,您将始终创建相同的模型,因为在创建重复模型时Backbone错误会悄然发生,这就是为什么您只能看到1个模型的原因。

+0

这也解释了为什么当他将'defaults'更改为'default'时它可以正常工作 – fguillen

0

我认为你的问题是出现在你的localdata中的对象。
localdata多少对象有不同的id
要么你应该提供不同的ID对每个对象在您的localdata阵列,或只是从defaults删除模型LayerModel

id场每当从defaults更改名称到default,那么因为没有默认的id主干将它作为新模型,因此将其添加到集合中。

所以你可以改变defaults任何其他名称,如abc和它有相同的行为