Backbone#使用POST保存模型

时间:2013-10-18 11:46:14

标签: backbone.js model

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

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

相反,我需要以某种方式覆盖Backbone#save函数,以便在不修改URL参数的情况下将数据作为POST请求发送。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

出现了3个选项。

1.这应该有用。

model.save(null, {type: "POST"});

2.如果您不考虑id,那么另一个黑客也是如此。

model.id = null;
model.save();

3.Else,覆盖这样。

var TextModel  = Backbone.Model.extend({
    sync:function(){
        if (arguments[0] === "update" || arguments[0] === "patch") {
           arguments[0] = "create";
        } 
        Backbone.sync.apply(this, arguments);
    }
});