扩展主干以支持Rails样式错误

时间:2012-10-28 04:59:07

标签: ruby-on-rails backbone.js

我正在寻找减少代码重复的方法。目前,每当我保存Backbone模型时,我总是提供以下代码来将Rails库存422响应反序列化为errors属性:

model.save({ name: "..." }, error: function(model, response) {
  result = $.parseJSON(response.responseText)
  model.errors = result.errors
  ...
});

是否可以配置Backbone以便在调用我的回调之前反序列化错误?我尝试重写sync方法,但此时回调包含在一个匿名函数中(并且不再可访问)。

1 个答案:

答案 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: "..." });