我正在尝试为我的模型和集合设置一个通用错误处理程序。我做了这样的事情:
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
}
});
我的印象是错误回调被覆盖。 有人知道怎么做吗?
答案 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;
}
})();