Backbone的通用错误处理程序

时间:2015-03-02 11:57:52

标签: backbone.js

我正在尝试为我的模型和集合设置一个通用错误处理程序。我做了这样的事情:

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);
};

这对fetch工作得很好,但我不能让它能用于保存。 当我这样想时:

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

我的印象是错误回调被覆盖。 有人知道怎么做吗?

1 个答案:

答案 0 :(得分: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/