2015-03-02 90 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/