是否可以简单地触发或调用在骨干网中保存的错误回调?
我用这个
覆盖了骨干的保存功能save: function(attributes, options) {
options || (options = {});
options.timeout = 10000;
options.beforeSend = sendAuthorization;
console.log( options.connection.ConnectionType );
if( options.connection.ConnectionType != 'No network connection' ){
Backbone.Model.prototype.save.call(this, attributes, options);
}else{
console.log("ERROR! network related!");
}
}
options.connection.ConnectionType是一个简单的字符串,表示设备(iPad)的当前互联网连接。
this.model.save( this.model,
connection : { ConnectionType : "No network connection" },
success : {...},
error : {...}
}
我想要的是if语句失败然后它应该触发save函数的错误回调。可能吗?感谢
答案 0 :(得分:2)
最简单的是你可以执行error
回调函数:
if( options.connection.ConnectionType != 'No network connection' ){
Backbone.Model.prototype.save.call(this, attributes, options);
} else {
if(options.error) {
options.error(this, null, options);
}
}
此方法存在的问题是它不符合save
方法和error
回调API。 save
方法应返回jqXHR
对象,错误回调应该将其作为第二个参数。
如果要提供API兼容的方法/回调签名,最简单的方法是中止请求。类似的东西:
var xhr = Backbone.Model.prototype.save.call(this, attributes, options);
if( options.connection.ConnectionType == 'No network connection' ){
xhr.abort();
}
return xhr;
这将在启动后立即取消请求。你得到xhr / promise返回对象和回调的正确xhr参数。 xhr的status
为0,statusText
“中止”。