主干#使用 POST 保存模型



我有一个可以包含大量文本数据的骨干模型,需要将其发送回服务器以更新数据库中的行。

但是,这很好用,因为模型可以包含大量数据,因此 URL 很可能太长而无法作为PUT请求发送。

相反,我需要以某种方式覆盖 Backbone#save 函数,将数据作为POST请求发送,而无需修改 URL 参数。

理想情况下,这只需要应用于一个模型。

你可以覆盖给定模型的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);
    }
});

最新更新