Backbone的一般错误处理程序
问题描述:
我想为我的模型和集合设置一个通用的错误处理程序。我做了这样的事情: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
}
});
我的印象是错误回调重写下。 有人有一个想法如何做到这一点?
答
您可以覆盖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;
}
})();