2013-03-10 122 views
2

重复我想有重复我的收藏骨干允许收集

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

id是骨干模型的特殊属性。是否有可能将你的id属性映射到别的东西,比如 - my_id? – snedkov 2013-03-10 21:03:51

+0

嗯是的工作,但通常我需要指定不同的问题,我刚刚编辑我的帖子上面。 – Ziarno 2013-03-10 21:39:35

+0

好吧,Backbone集合是一个集合,并且来自文档:_ Backbone会将重复模型添加到集合中,而不是将错误抛出,而是默默地跳过它们._也许你可以提供更多关于为什么你需要重复对象的细节采集? – snedkov 2013-03-10 21:48:07

回答

3

首先,空模型/对象是将一个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 
+0

我刚刚有同样的想法,但谢谢你! – Ziarno 2013-03-10 22:00:21

2

通话而不是

collection.add(model1); 

collection.add(model1.toJSON()); 

不能有任何模型的“身份证”性质,尽管,它不会重复。