Backbone允许在集合中重复

时间:2013-03-10 19:53:09

标签: backbone.js

我想在我的收藏中有重复

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个模型对象的数组,并且有一些空对象。有什么方法可以让我的收藏品接受重复吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

而不是

collection.add(model1);

致电

collection.add(model1.toJSON());

虽然模型中没有任何'id'属性,但它不会重复。