2012-05-25 149 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和它有相同的行爲