在我的应用程序中,我按照以下方式覆盖了Backbone.sync:
Backbone.sync = function(method, model, options){
//Some custom code
//THIS FAILS.
Backbone.prototype.sync.call(this, method, model, options);
}}
我的问题是,我如何调用原始的同步方法?我需要使用 this.sync 吗?
在我的应用程序中,我按照以下方式覆盖了Backbone.sync:
Backbone.sync = function(method, model, options){
//Some custom code
//THIS FAILS.
Backbone.prototype.sync.call(this, method, model, options);
}}
我的问题是,我如何调用原始的同步方法?我需要使用 this.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);
}
});
var parentSyncMethod = Backbone.sync; // 保存父方法,重写
Backbone.sync = function() {
// 在此添加您的代码。
var parentSyncMethod.apply(Backbone, arguments);
};
希望能在某种程度上有所帮助。
var TestModel = Backbone.Model.extend({
sync: function(method, model, options){
// some code here
return Backbone.sync(method, model, options);
}
});
Backbone.prototype.sync.call
不起作用,因为原型上没有定义 sync
。在控制台中检查 Backbone
对象以查看其结构。您需要将自己的方法命名为其他名称,或在覆盖自己的实现之前保存对原始 sync
方法的引用。