javascript - 下划线: Losing reference to collection when filtering

标签 javascript backbone.js underscore.js

我正在使用backbone的fetch()来获取我的集合。由于这需要花费大量时间并且会频繁过滤,因此无需多次 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);

我认为我正在做的事情:如果没有缓存的集合,则创建一个并获取它。我将能够使用具有不同“day”和“stage”值的此函数来过滤 App.fetch,它仅填充一次并且不会再次触及。

当我在集合上记录 on.('change') 事件时,我会触发更改事件。我的猜测是过滤器方法触发了更改事件,结果是它只在第一次起作用!

我的问题是为什么这不是我想的那样以及我将如何解决这个问题。

编辑:问题是第二次调用此函数时,我向集合“c”返回 0 个模型。

此致,简

最佳答案

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

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);
       }
   });

关于javascript - 下划线: Losing reference to collection when filtering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24084647/

相关文章:

javascript - 没有 jQuery 插件的浏览器后退和前进按钮事件

javascript - Ember js 函数打印源代码而不是它的实际值

javascript - 在显示模态之前加载模态内容

javascript - 与父对象一起获取深层对象

javascript - JavaScript 引擎和 JavaScript 运行时环境有什么区别

javascript - anchor 标记 href 与设置的内容不同

javascript - 在嵌套对象中搜索文本(以 Backbone.js 集合为例)

javascript - 像 Pinterest 一样接管浏览器滚动条的模态窗口

javascript - 结合 jQuery Globalize 和 underscore.js 模板?

javascript - context 参数在 underscore.js 中有什么作用?