Backbone.js 主干允许在集合中重复

Backbone.js 主干允许在集合中重复,backbone.js,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(m

我想在我的收藏中有复本

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个模型对象的数组,并出于某种原因注销一些空对象。有什么办法可以让我的收藏接受重复的吗

首先,空模型/对象是将emply对象传递给Backbone.Collection.constructor的结果

> var collection = new Backbone.Collection({});
> collection.length;
=> 1
接下来,每个主干.Model保留对其集合的引用(使用集合属性),因此不能在集合中复制模型。相反,您可以通过执行以下操作复制模型特性:

> var collection = new Backbone.Collection();
> var model = new Backbone.Model({ foo: 'bar' });
> collection.add(model);
> collection.add(model.toJSON());
> collection.length;
=> 2
而不是

collection.add(model1);
召唤


但是,模型中不能有任何“id”属性,这样就不会重复。

id是主干模型的特殊属性。是否可以将您的id属性映射到其他对象,如-my_id?嗯,是的,这很有效,但我需要以不同的方式指定问题,我刚刚编辑了上面的文章。主干集合是一个集合,来自文档:在向集合添加重复模型时,不是抛出错误,主干现在将自动跳过它们。也许您可以提供更多详细信息,说明为什么您需要此集合中的重复对象?谢谢。我是这样做的:我没有调用collection.add(model1),而是调用collection.add(model1.toJSON())。您在上一条评论中的想法很有帮助,我不能在json数据中使用相同的“id”属性!
collection.add(model1.toJSON());