3

コードの重複を減らすためのアプローチを探しています。現在、Backboneモデルを保存するときは常に、Railsのストック422応答をエラープロパティに逆シリアル化するために次のコードを提供しています。

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

コールバックを呼び出す前にエラーを逆シリアル化するようにバックボーンを構成することは可能ですか?メソッドをオーバーライドしようとしsyncましたが、その時点でコールバックは無名関数にラップされています(そしてアクセスできなくなりました)。

4

1 に答える 1

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: "..." });
于 2012-10-28T09:06:57.457 に答える