【问题标题】:How to Access XHR Object making backbone.model save如何访问 XHR 对象使主干.模型保存
【发布时间】:2012-08-27 14:25:56
【问题描述】:

通过使用 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.model onError 服务器事件时,我应该如何获取 XHR?

【问题讨论】:

    标签: javascript ajax jquery backbone.js


    【解决方案1】:

    当您调用任何通过 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);            
        }
    });
    

    另外,请注意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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2013-08-10
      • 1970-01-01
      • 2012-04-24
      • 2012-12-19
      • 1970-01-01
      相关资源
      最近更新 更多