我试图通过执行以下操作仅保存模型的更改属性:
this.model.set("likes", this.model.get("likes") + 1);
this.model.save();
并像这样扩展 Backbone 原型:
var backbone_common_extension = {
sync: function(method,model,options) {
options.contentType = 'application/json';
if (method == 'update') {
options.data = JSON.stringify(model.changedAttributes() || {});
}
console.log(options.data);
Backbone.sync.call(this, method, model, options);
}
};
_.extend(Backbone.Model.prototype, backbone_common_extension);
问题是 model.changedAttributes() 总是空的。我试过在 set 方法上传递 {silent: true} ,但同样的事情。如何防止骨干在同步之前清除 changedAttributes()?