我有Task
的集合。我在集合声明中添加了一些过滤器方法,以在新实例中返回集合的子集。我想要做的是在原始集合中创建一个模型,并将add
(和任何其他)事件过滤到Tasks
集合的任何新实例,以便我的视图部分可以相应地更新。 / p>
Here is a JSBin demonstrating my problem。请注意,当我在最后一行向原始集合添加新模型时,列表不会更新,因为显然,过滤器方法返回该集合的新实例(这对我来说似乎很干净),因此不会触发任何侦听器 - 视图使用不同的集合到已添加项目的集合。
如何以语义和干净的方式过滤集合,但是保持绑定到集合的任何事件在返回的模型子集上被过滤?
例如,以下代码未触发add
的{{1}}事件(notAsManyTasks
从未显示):
alert()
如何解决这个问题?理想情况下,我不想存储集合的原始状态,返回子集,然后再次恢复所有模型。
答案 0 :(得分:1)
如果不做一些复杂的事情,你应该能够沿着这些方向做点什么:
mySubset.listenTo(myCollection, 'all', function() {
this.trigger.apply(this, arguments);
});
您可以收听集合中的所有事件,并使用您的子集回显它们。虽然我猜这只是解决方案的一半,因为您的子集不会更新,您可以在监听器中为所有子集执行过滤。
另一个只能执行一次工作的解决方案是让您的集合听取自己的add
事件,过滤新模型,并触发自定义事件,以便只有实际需要的子集才能做点什么。