重写Backbone的“解析”方法时如何触发错误

时间:2014-08-05 22:10:31

标签: javascript backbone.js

当我在parse()方法中收到的服务器响应无效时,我试图抛出错误。

我尝试将options参数中的error键设置为false,或者在我的模型的重叠options.xhr.error(this, resp, options);方法中调用parse()方法,但没有一个导致要触发error方法的fetch()回调。

有任何线索吗?

这里是实际的例子:

Backbone.Model.extend({

  parse: function parse(resp, options){

    if(resp && resp.meta.success){
      return resp.response;
    }else{
      //Throw an error which cause the "error" callback of the fetch method to get triggered
    }
  }
an});

1 个答案:

答案 0 :(得分:0)

如果响应有错误,您应该能够覆盖同步函数以触发错误回调,或者使用主响应调用默认成功处理程序:

var MyModel = Backbone.Model.extend({

  sync: function(method, model, options){
    var error = options.error;
    var success = options.success;
    options.success = function(resp){
      if (resp && resp.meta.success){
        success(resp.response);
      } else{
        error(resp.response);
      }
    };

    return MyModel.__super__.sync.call(this, method, model, options);
  }
});