当获取失败时,让我的所有Backbone模型都做出同样的反应

时间:2011-12-30 23:04:50

标签: javascript backbone.js

我正在锁定一种方式,其中我的所有集合和模型使用相同的逻辑来在获取或保存失败时显示错误。但我不想再次编写onError回调。目标是使用方法打开错误对话框,具体取决于响应失败时的http错误代码。

2 个答案:

答案 0 :(得分:2)

另一种方法是创建一个基础模型和集合,让你的模型和集合扩展而不是Backbone:

var BaseModel = Backbone.Model.extend({
  onSyncError: function(model, response) {
    // your error-handling code
  },

  onSyncSuccess: function(model, response) {
    // do stuff if successful
  },

  // Backbone will call your 'sync' if it exists
  sync: function(method, model, options) {
    options.error = this.onSyncError;
    options.success = this.onSyncSuccess;
    Backbone.sync.call(this, method, model, options);
  }
});

然后在你的模型中:

var MyModel = BaseModel.extend({
  // model stuff
});

答案 1 :(得分:1)

考虑到这一点,我提出了这个解决方案:

function callback(success){
    this.success = sucess;
}

callback.prototyp.error = function(model, response){
    // central error handling here
}

myModel.save(new callback(myModel.success))