我正在寻找减少代码重复的方法。目前,每当我保存Backbone模型时,我总是提供以下代码来将Rails库存422
响应反序列化为errors属性:
model.save({ name: "..." }, error: function(model, response) {
result = $.parseJSON(response.responseText)
model.errors = result.errors
...
});
是否可以配置Backbone以便在调用我的回调之前反序列化错误?我尝试重写sync
方法,但此时回调包含在一个匿名函数中(并且不再可访问)。
答案 0 :(得分:1)
您可以使用由需要错误解析的其他模型扩展的ErrorHandler
模型。 ErrorHandler
模型应该侦听“错误”事件(在请求之后发生错误时由同步函数触发)。
var ErrorHandler = Backbone.Model.extend({
initialize: function() {
this.on("error", this.defaultErrorHandler, this);
},
defaultErrorHandler: function(model, error) {
result = $.parseJSON(response.responseText)
model.errors = result.errors
...
}
});
var OtherModel = ErrorHandler.extend({
...
});
var model = new OtherModel();
model.save({ name: "..." });