3

ajaxを使用することで、XHRオブジェクトにアクセスできます。

$.ajax().fail(function (XHR) {
     // some code
});

バックボーンモデルを保存する場合:

var MyView = Backbone.View.extend({

    saveModel: function () {
        this.myModel.save({
            error: this.onError
        });
    }


    onError: function (xhr) {
       // how to access xhr?
    }

});

backbone.modelonErrorサーバーイベントを保存するときにXHRを取得するにはどうすればよいですか?

4

1 に答える 1

5

Backbone.Syncを通過する関数のいずれかを呼び出すと、BackboneはXHRへの参照を返します。

var MyModel = Backbone.Model.extend({
    url: "/some/path/that/is/an/error/"
});

var myModel = new MyModel();

xhr = myModel.save( {} , {
    error: function(model, response) {
        console.log(xhr);            
    }
});

また、2つの引数を取ることに注意してくださいModel.save()。保存する前に変更するプロパティと、2番目の引数としてのオプションハッシュです。

jsFiddleの例を次に示します。http://jsfiddle.net/edwardmsmith/8AVjy/7/

コメントを投稿:

私は実際にそれをする必要はありませんでしたが、これはおそらく私がすることです:

var MyModel = Backbone.Model.extend({
    url: "/some/path/that/is/an/error/"
});

var MyView = Backbone.View.extend({

    saveModel: function () {
        that = this;
        xhr = this.model.save({}, {
            error: function (model, resp) {
                that.onError(xhr);
            }
        });
    },

    onError: function (xhr) {
       // how to access xhr?
        console.log(xhr);            
    }

});

var myModel = new MyModel();

var myView = new MyView({model: myModel});

myView.saveModel();

このために更新されたjsFiddle:http: //jsfiddle.net/edwardmsmith/8AVjy/14/

于 2012-08-27T15:14:49.733 に答える