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! で、モデルは 1 つだけです!

奇妙なことに、変更する"defaults""default"、収集結果は希望どおりになり、長さは 17 になります

なぜこれが起こるのですか?どうすればこの問題を解決できますか?

4

2 に答える 2

4

idAttributeモデルのデフォルトはですid。を定義しているのでiddefaults常に同じモデルを作成します。重複モデルが作成されるとバックボーンエラーが発生するため、モデルが1つしか表示されないのはそのためです。

于 2012-05-25T11:26:14.290 に答える
0

私はあなたの問題はあなたの中に存在するオブジェクトにあると思いますlocaldata
配列内のすべてのオブジェクトにlocaldata異なる IDを指定するか、名前を 変更するたびにモデル内のidフィールドを削除する必要があります。デフォルトのIDバックボーンがないため、新しいモデルとして取得されます。したがって、それをコレクションに追加します。そのため、のような他の名前に変更でき、同じ動作になります
localdataiddefaultsLayerModel

defaultsdefault

defaultsabc

于 2012-05-25T11:26:27.260 に答える