我有一个模型有一堆属性,但这里感兴趣的两个是 id
和 key
。 key
始终是唯一的,id
不是那么多。当我尝试将具有相同 id
的多个模型添加到集合时,出现此错误:
Uncaught Error: Can't add the same model to a collection twice
我猜这是因为 backbone 使用 id
来决定两个模型是否是 ===
。那是对的吗?如果是这样,有没有办法在不交换 id
和 key
属性的名称的情况下覆盖此行为?我试着摆弄集合的 comparator
但无济于事......
最佳答案
是的,backbone 使用和管理模型的 id
属性来进行识别。如果您的数据使用不同的属性,您可以设置模型的 idAttribute
到您的属性(property)的名称,使 Backbone 从该属性(property)中读取 id:
var Entry = Backbone.Model.extend({
idAttribute: "key"
});
var entry = new Entry({ key: 1, name: "an entry" });
alert("entry id: " + entry.id);
但是,您不能同时将模型的 id
属性用于其他任何内容。
关于javascript - 无法将模型添加到主干集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202725/