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 都保留对其集合的引用(使用集合属性),因此您不能在集合中复制模型。相反,您可以通过执行以下操作来复制模型属性:

> 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 回答