【发布时间】:2013-03-04 10:39:21
【问题描述】:
我在我的模型中使用复合键并根据我的复合键生成 ID:
app.Assignment = Backbone.Model.extend({
idAttribute : [ 'personId', 'jobId' ],
parse : function(resp) {
resp.id = resp.personId + "_" + resp.jobId;
return resp;
}
});
但是 Backbone 仍然认为所有 Assignment 实例都是新的,尽管我在从 API 获取它们时在 parse 方法中设置了 id。因此,Backbone 不执行 DELETE,而是在更新时执行 POST 而不是 PUT。我该如何解决这个问题,或者什么是“正确的方法”?
更新:
看起来用 this.id 替换 resp.id 可以解决问题。
【问题讨论】:
-
Backbone 不支持复合键,因此将
idAttribute定义为数组是无效的。每个模型都必须有一个 id 字段。您的资源 URL 是什么样的? -
它确实支持复合键:github.com/documentcloud/backbone/pull/1558 实际上我通过这样做解决了它 this.id = ... 而不是 resp.ide = ...
-
啊,你使用的是github.com/caseywebdev/backbone-composite-keys。在问题中提及它是有道理的。
-
不做解析的事情消除了使用复合键的原因吗?
标签: backbone.js model composite-key