我使用主干的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
答案 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);
}
});