获取时创建的Backbone Collection和XHR对象之间的关联

时间:2014-02-20 21:11:36

标签: backbone.js backbone-collections jqxhr

Backbone Collection与您在其上执行.fetch()时创建的XHR对象之间是否存在关联?

我想做这样的事情:

collection = new Backbone.Collection;
xhrObj = collection.fetch();
xhrObj.parent == collection; //true

更大的目标是让我查看是否有特定集合的待处理.fetch()。如果在Backbone中有另一种方法可以做到这一点,请告诉我。我想我会存储XHR对象并检查是否有任何未完成的对象与该集合相关联。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var fetch = Backbone.Collection.prototype.fetch;
Backbone.Collection.prototype.fetch = function (options) {

    options = options ? _.clone(options) : {};

    var success = options.success;
    options.success = function (collection, resp, options) {
        collection.xhrObj = resp;
        if (success) success(collection, resp, options);
    };

    var error = options.error;
    options.error = function (collection, resp, options) {
        collection.xhrObj = void 0; // or whatever you want
        if (error) error(collection, resp, options);
    };

    fetch.call(this, options);
};

之后,如果获取调用成功,您可以在集合中找到服务器响应。