我在保存对集合中单个模型的更改时遇到了一些问题。已加载的模型(通过集合 .reset())正在发出 POST(就好像它们是新的一样)而不是预期的 PUT。
这是我正在采取的方法:
应用查看
render: function() {
var el = this.el;
this.model.childcollection.forEach(function(s) {
var view = new ChildView({ model: s });
el.append(view.render().el);
});
return this;
},
童视
this.model.set(
{
ValueA: somevalue,
ValueB: somevalue
},
{
error: function() {
console.log("Error saving model");
},
success: function() {
console.log("Model change saved");
}
});
this.model.save();
观察:
谁能告诉我为什么会发生这种情况?
最佳答案
主干使用了.id
模型的property(不是attribute)来决定是put还是post,如下源码所示:https://github.com/documentcloud/backbone/blob/master/backbone.js#L344-346
如果它在保存现有模型时发布,这意味着 .id
属性未正确加载。即使调用 model.get("id")
返回正确的结果,调用 model.id
必须返回正确的结果才能知道这不是一个新模型。
确保您的模型的 id 属性称为 id
,或者如果不是,请务必设置 idAttribute
在您的模型上:
MyModel = Backbone.Model.extend({
idAttribute: "myCustomId"
});
关于backbone.js - 现有模型上的 .save() 会导致 POST 而不是 PUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473057/