如何调用父骨干同步方法

时间:2012-01-17 04:00:16

标签: javascript backbone.js

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

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

    //THIS FAILS.
    Backbone.prototype.sync.call(this, method, model, options); 
}}

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

4 个答案:

答案 0 :(得分:9)

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

(this.sync || Backbone.sync)

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

var TestModel = Backbone.Model.extend({ 

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

        Backbone.sync(method, model, options); 
    }
});

这是我从herehere

收集的内容

答案 1 :(得分:4)

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


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

希望它在某种程度上有所帮助

答案 2 :(得分:4)

var TestModel = Backbone.Model.extend({ 
    sync: function(method, model, options){  
        // some code here
        return Backbone.sync(method, model, options); 
    }
});

答案 3 :(得分:1)

Backbone.prototype.sync.call无效,因为原型上未定义sync。检查控制台中的Backbone对象以查看其结构。在使用自己的实现覆盖它之前,您需要为自己的方法命名,或者保存对原始sync方法的引用。