我有一个可以包含大量文本数据的 Backbone 模型,需要将其发送回服务器以更新数据库中的行。
然而,这很好用,因为模型可以包含大量数据,URL 很可能太长而无法作为PUT
请求发送。
相反,我需要以某种方式覆盖该函数,以便在不修改 URL 参数的情况下Backbone#save
将数据作为请求发送。POST
理想情况下,这只需要应用于一个模型。
我有一个可以包含大量文本数据的 Backbone 模型,需要将其发送回服务器以更新数据库中的行。
然而,这很好用,因为模型可以包含大量数据,URL 很可能太长而无法作为PUT
请求发送。
相反,我需要以某种方式覆盖该函数,以便在不修改 URL 参数的情况下Backbone#save
将数据作为请求发送。POST
理想情况下,这只需要应用于一个模型。
您可以覆盖给定模型的 Model.sync,如下所示
var oldSync = Backbone.Model.prototype.sync;
var MyModel = Backbone.Model.extend({
urlRoot:'someurl',
sync:function(method, model){
var args = _.toArray(arguments);
console.log(args);
if(method === 'update'){
args[0]='create';
}
oldSync.apply(this, args);
}
})
var model = new MyModel({id:'json'})
model.save();
脑海中浮现3个选项。
1.这应该有效。
model.save(null, {type: "POST"});
2.如果您不考虑id
.
model.id = null;
model.save();
3.否则,像这样覆盖。
var TextModel = Backbone.Model.extend({
sync:function(){
if (arguments[0] === "update" || arguments[0] === "patch") {
arguments[0] = "create";
}
Backbone.sync.apply(this, arguments);
}
});