我有一个拥有大量属性的模型,但这里感兴趣的两个是id
和key
。 key
始终是唯一的,id
并非如此。当我尝试将多个具有相同id
的模型添加到集合时,我收到此错误:
Uncaught Error: Can't add the same model to a collection twice
我猜这是因为骨干使用id
来决定两个模型是否===
。那是对的吗?如果有,是否有办法覆盖此行为而无需交换id
和key
属性的名称?我试着搞乱这个集合的comparator
,但无济于事......
答案 0 :(得分:8)
是的,骨干使用和管理模型的id
属性以进行识别。如果您的数据使用不同的属性,则可以将模型的idAttribute
设置为您的属性名称,以使主干从此属性中读取id:
var Entry = Backbone.Model.extend({
idAttribute: "key"
});
var entry = new Entry({ key: 1, name: "an entry" });
alert("entry id: " + entry.id);
但是,您不能同时将模型的id
属性用于其他任何内容。
答案 1 :(得分:0)
Backbone阻止我们将相同的模型插入到一个集合中......你可以在backbone.js第676行到第700行看到它
如果你真的想要将相同的模型插入到集合中,只需删除那里的代码
if(existing = this.get(model)){//here
...
}