在我的應用程序重寫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