在model.save成功上生成自定义Backbone错误
我正在尝试为我的模型重写Backbone.sync方法。
服务器返回状态:200 OK,模型在任何情况下都会触发成功回调。
服务器响应如下
状态:200 OK
回应:{statusCode:'0'; // 0成功,1,2,3错误...}
我已经覆盖同步函数抛出错误回调的情况下工作正常,并抛出错误回调
虽然我无法将任何自定义选项传递给错误回调。
sync : function(method, model, options) {
var self = this, config = {};
var newError = function(method, success, error) {
return function(response, textStatus, jqXHR) {
if (response.statusCode === '0' && _.isFunction(success)) {
success(response, textStatus, jqXHR);
} else if (_.isFunction(error)) {
switch (response.statusCode) {
case '1':
//response.statusCode: '2'
//response.statusMessage: 'Servers error 1!”
textStatus = 'Servers error 1!';
break;
case '2':
//response.result: 'Server error 2'
//response.statusCode: '2'
textStatus = 'Servers error 1';
break;
}
error(response, jqXHR, textStatus ); //arguments fail maybe backbone overrides them before firing my error callback
}
};
};
config.success = newError(method, options.success, options.error);
// add API call configuration to the `options` object
options = _.extend(options, config);
return Backbone.Model.prototype.sync.call(this, method, model, options);
}
/ /以下错误回调被调用,但消息不传递给它
model.save(data,{
success : successCB,
error : function(args){
alert('error'); //works
//args.textStatus or something similar passed from above sync logic
}
})
我知道这条线有什么不对。 错误(响应,jqXHR,textStatus);
请让我知道如何通过textStatus或其他选项错误回调
似乎是错误函数中参数顺序的问题。 签名应该是(jqXHR jqXHR, String textStatus, String errorThrown)
。
以下要点帮助了common.js
从上面的要点行号106到128通过向它添加下面的行解决了这个问题
response.done(function(){
if(response.responseJSON.statusCode &&
response.responseJSON.statusCode === '0'){
response.done(deferred.resolve);
} else {
deferred.rejectWith(response, arguments);
}
});
感谢您的回复,尽管更改参数顺序并没有帮助
链接地址: http://www.djcxy.com/p/67087.html