javascript - 无法将模型添加到主干集合

标签 javascript collections backbone.js equals

我有一个模型有一堆属性,但这里感兴趣的两个是 idkeykey 始终是唯一的,id 不是那么多。当我尝试将具有相同 id 的多个模型添加到集合时,出现此错误:

Uncaught Error: Can't add the same model to a collection twice

我猜这是因为 backbone 使用 id 来决定两个模型是否是 ===。那是对的吗?如果是这样,有没有办法在不交换 idkey 属性的名称的情况下覆盖此行为?我试着摆弄集合的 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/

相关文章:

javascript - 如何使用 JavaScript 编写未封闭的 HTML 语句

javascript - setInterval() 方法的行为很奇怪

Scala 编码风格 : initialize a val Seq depending on optional values

javascript - 主干 View 事件绑定(bind)较晚

javascript - Marionette:从集合中删除后,将类重新分配给每三个 itemView

javascript - 使用父函数jquery显示类名

c# - 将集合 (HashSet) 隐式转换为 IEnumerable<T>

java - 如何使用 Java(无 DB)更快地删除文件中的重复/聚合行

javascript - 在 Mac 中学习 javascript 的简单环境设置是什么

javascript - <ul> 和 <li> - 具有交替行颜色的表格