我想在我的收藏中有重复
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个模型对象的数组,并且有一些空对象。有什么方法可以让我的收藏品接受重复吗?
答案 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'属性,但它不会重复。