获取集合时,BackboneJS .ajaxStart()和.ajaxStop()

时间:2014-04-14 11:05:46

标签: ajax backbone.js

我有一个BackboneJS应用程序,我获取了一堆集合。现在我想应用某种加载器来指示集合正在加载并且用户知道发生了什么。所以我想使用.ajaxStart().ajaxStop() - 方法。所以我在考虑这样的事情:

this.artistsCollection.fetch(
$(document).ajaxStart(function () {
    console.log('ajax start');
           $('.someDiv').addClass('TEST');
}),
$(document).ajaxStop(function () {
    console.log('ajax stop');
           // stop doing stuff
})
);

问题是我第一次触发.fetch()我的控制台说ajax stop并且该类没有被应用!?!?第二次我触发.fetch()它就像应该的那样工作并且类被应用了。有谁知道这个问题是什么?

请帮助任何人?

1 个答案:

答案 0 :(得分:0)

您将传递的两个事件处理程序与jQuery作为参数传递给Collection fetch方法。 Backbone Collection fetch方法接收一个options对象,该对象可以包含成功回调(参见documentation)。

我认为如果您将侦听器移出方法调用,它应该按预期工作:

// Global AJAX listeners
$(document).ajaxStart(function () {
    console.log('ajax start');
            // do stuff
});

$(document).ajaxStop(function () {
    console.log('ajax stop');
           // stop doing stuff
});

this.artistsCollection.fetch();