当我尝试保存现有对象时,如下所示:
this.model.set('name', $('#district-name').val());
this.model.save();
Backbone通过数据
向/ api / zone / 18发出PUT请求id: 18
name: "qq3324"
但是id已经在url中了,我不想在请求正文中发送它。
答案 0 :(得分:1)
save
选项patch
致电model.save({ patch: true })
发出PATCH
请求,仅包含已更改的请求
properties - 这仅影响当前要保存的调用,因此您必须记住为每个调用传递参数。此外,此工程会产生PATCH
请求,而不是PUT
请求。
Backbone.sync
Backbone.sync
与RESTful API进行通信。在发出Backbone.sync
请求时,覆盖PUT
方法以排除ID - 此解决方案可在全局范围内运行。有关此方法的实现,请参阅Backbone注释源:http://backbonejs.org/docs/backbone.html#section-130
toJSON
方法 Backbone.sync
调用模型的model.toJSON
方法,该方法传递一个options对象(与model.save
函数相同的选项对象)。您可以覆盖此函数以获取一个参数,该参数指示应排除该ID。如果您始终扩展BaseModel
而不是Backbone.Model
,则可以全局工作。
var BaseModel = Backbone.Model.extend({
toJSON: function (options) {
var data = _.clone(this.attributes);
if (options.excludeId) {
data = _.omit(data, 'id');
}
return data;
}
});
var SomeModel = BaseModel.extend({});
new SomeModel({ ... }).save({ excludeId: true });
或者,只需忽略服务器端的ID。