下划线:过滤时丢失对集合的引用

时间:2014-06-06 14:46:13

标签: javascript backbone.js underscore.js

我使用主干的fetch()来获取我的收藏。由于这需要花费大量时间并且经常被过滤,因此不需要多次获取()它。我试图这样做:

if(!App.fetch){
   App.fetch = new App.Collection.Artists();
   App.fetch.fetch()
}                
var c = _.filter(App.fetch.models, function(model){
     return model.get('date') == day && model.get('stage') == stage
});
var c = new App.Collection.Artists(c);

我认为我在做什么:如果没有缓存集合,请创建一个并获取它。我能够在不同的日子里使用这个功能"和"阶段"过滤App.fetch的值,它只填充一次而不再触及。

当我在收集时登录('更改')事件时,我会触发更改事件。我的猜测是filter方法触发change事件,结果是它只在第一次起作用!

我的问题是为什么我不认为我在做什么以及如何解决这个问题。

编辑:问题是,第二次调用此函数时,我会将0个模型返回到集合' c'。

此致,Jan

1 个答案:

答案 0 :(得分:1)

您正在以同步方式处理异步调用。尝试这样的事情,根据需要调整变量范围:

App.fetch({
      success: function() {
        var c = _.filter(App.fetch.models, function(model){
             return model.get('date') == day && model.get('stage') == stage
        });
        var c = new App.Collection.Artists(c);
       }
   });