在我的应用程序重写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吗?
尝试这样的事情,可能不是最好的解决方案,但它的工作原理:
var parentSyncMethod = Backbone.sync; //save parent method, the override
Backbone.sync = function() {
// Your code here.
var parentSyncMethod.apply(Backbone, arguments);
};
希望它有助于在某种程度上,因为sync
未在原型定义
Backbone.prototype.sync.call
将无法正常工作。检查控制台中的Backbone
对象以查看其结构。您需要为自己的方法命名其他名称,或者在使用自己的实现覆盖之前,保存对原始方法sync
方法的引用。
据我了解,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);
}
});
var TestModel = Backbone.Model.extend({
sync: function(method, model, options){
// some code here
return Backbone.sync(method, model, options);
}
});
云集
我以前使用过这种方法,发现它运行良好,特别是在需要特定于模型的同步时。直接改变Backbone.sync(如另一个答案中所示)将影响所有模型,这可能不是您需要的。 – erturne 2012-02-09 13:25:26