如何调用父骨干同步方法

Ken*_*awa 7 javascript backbone.js

在我的应用程序中,我重写Backbone.sync如下:

Backbone.sync = function(method, model, options){ 
    //Some custom code

    //THIS FAILS.
    Backbone.prototype.sync.call(this, method, model, options); 
}}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何调用原始同步方法?我需要使用this.sync吗?

pla*_*mbo 9

根据我的理解,Backbone.sync检查是否有本地定义的同步版本,并在调用全局Backbone.sync之前调用它:

(this.sync || Backbone.sync)
Run Code Online (Sandbox Code Playgroud)

因此,鉴于您的模型类似于TestModel.我认为你可以做这样的事情(原谅,我这可能不是正确的语法,javascript远非我的专长):

var TestModel = Backbone.Model.extend({ 

    "sync": function(method, model, options) { 
        //Some custom code

        Backbone.sync(method, model, options); 
    }
});
Run Code Online (Sandbox Code Playgroud)

这是我从这里这里收集到的

  • 我之前使用过这种方法,发现它运行良好,特别是如果你需要一个特定于模型的同步.直接改变Backbone.sync(如另一个答案中所示)将影响所有模型,这可能不是您需要的. (3认同)

Sud*_*oti 4

尝试这样的方法,可能不是最好的解决方案,但它有效:


var parentSyncMethod = Backbone.sync; //save parent method, the override
Backbone.sync = function() {
    // Your code here.
    var parentSyncMethod.apply(Backbone, arguments);
};

希望它能以某种方式有所帮助