在我的应用程序中,我重写Backbone.sync,如下所示:
Backbone.sync = function(method, model, options){
//Some custom code
//THIS FAILS.
Backbone.prototype.sync.call(this, method, model, options);
}}
我的问题是,如何调用原始同步方法?我需要使用this.sync吗?
答案 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);
}
});
收集的内容
答案 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
方法的引用。