2015-03-02 89 views
0

我想爲我的模型和集合設置一個通用的錯誤處理程序。我做了這樣的事情:Backbone的一般錯誤處理程序

var originalFetchModel = Backbone.Model.prototype.fetch; 
Backbone.Model.prototype.fetch = function(options){ 
    var originalError = options.error; 
    options.error = function(model, error){ 
     if (originalError){ originalError(model, error, options); } 
     //my logic here 
    } 
    originalFetchModel.apply(this, arguments); 
}; 

這對於抓取工作非常好,但我不能使它保存工作。 當我做somethink這樣的:

model.save(modelDetails, { 
       success: function (model) { 
        //logic 
       } 
      }); 

我的印象是錯誤回調重寫下。 有人有一個想法如何做到這一點?

回答

2

您可以覆蓋Backbone.sync並使用jQuery返回的promise來全局處理錯誤。喜歡的東西

(function() { 
    var orgsync = Backbone.sync; 

    Backbone.sync = function(method, model, options) { 
     var xhr = orgsync.call(this, method, model, options); 
     xhr.fail(function() { 
      console.log('global error handler', method); 
     }); 
     return xhr; 
    } 
})(); 

並演示http://jsfiddle.net/nikoshr/qm6z4sqy/