3

コレクションに複製を入れたい

var Model = Backbone.Model.extend({});

var Collection = Backbone.Collection.extend({});
var collection = new Collection({});

var model1 = new Model({idk: 1, name: "pete"})
var model2 = new Model({idk: 2, name: "phil"})

collection.add(model1);
collection.add(model2);
collection.add(model1);

私がそれを呼び出すconsole.log(collection.toJSON())と、2つのモデルオブジェクトといくつかの空のオブジェクトを含む配列のみがログアウトされます。コレクションに重複を受け入れさせる方法はありますか?

4

2 に答える 2

4

まず最初に、空のモデル/オブジェクトは、emplyオブジェクトをBackbone.Collection.constructorに渡した結果です。

> var collection = new Backbone.Collection({});
> collection.length;
=> 1

次に、各Backbone.Modelは(collectionプロパティを使用して)そのコレクションへの参照を保持するため、コレクション内でモデルを複製することはできません。代わりに、次のようにしてモデルのプロパティを複製できます。

> var collection = new Backbone.Collection();
> var model = new Backbone.Model({ foo: 'bar' });
> collection.add(model);
> collection.add(model.toJSON());
> collection.length;
=> 2
于 2013-03-10T21:56:30.863 に答える
2

それ以外の

collection.add(model1);

電話

collection.add(model1.toJSON());

ただし、モデルに「id」プロパティを含めることはできませんが、その場合は複製されません。

于 2013-03-10T21:58:57.890 に答える