Backbone.js 将事件复制到新实例

Backbone.js 将事件复制到新实例,backbone.js,backbone-events,Backbone.js,Backbone Events,我有一个任务的集合。我在集合声明中添加了一些过滤方法,以在新实例中返回集合的子集。我要做的是在原始集合中创建一个模型,并将添加(以及任何其他)事件过滤器向下过滤到任务集合的任何新实例,以便我的视图部分可以相应地更新 。请注意,当我在最后一行的原始集合中添加新模型时,列表不会更新,因为很明显,筛选方法返回该集合的新实例(对我来说似乎是干净的),因此不会触发任何侦听器-视图使用的集合与添加了项的集合不同 如何在语义上和干净地过滤集合,但将任何事件绑定到要过滤的集合,并将其绑定到返回的模型子集上 例如

我有一个
任务的集合。我在集合声明中添加了一些过滤方法,以在新实例中返回集合的子集。我要做的是在原始集合中创建一个模型,并将
添加
(以及任何其他)事件过滤器向下过滤到
任务
集合的任何新实例,以便我的视图部分可以相应地更新

。请注意,当我在最后一行的原始集合中添加新模型时,列表不会更新,因为很明显,筛选方法返回该集合的新实例(对我来说似乎是干净的),因此不会触发任何侦听器-视图使用的集合与添加了项的集合不同

如何在语义上和干净地过滤集合,但将任何事件绑定到要过滤的集合,并将其绑定到返回的模型子集上

例如,
notAsManyTasks
add
事件不会针对以下代码触发(
alert()
从不显示):


我怎样才能避开这个问题?理想情况下,我不想存储集合的原始状态,返回一个子集,然后再次恢复所有模型。

无需执行一些复杂的操作,您应该能够按照以下思路执行操作:

mySubset.listenTo(myCollection, 'all', function() {
  this.trigger.apply(this, arguments);
});
您将侦听集合中的所有事件,并将它们与您的子集一起回显。虽然我想这只是解决方案的一半,因为您的子集不会被更新,您会在侦听器中对所有子集进行筛选。

另一种只执行一次任务的解决方案是,让您的集合监听自己的
添加
事件,过滤新模型,并触发自定义事件,以便只有实际需要执行某项操作的子集才能执行某项操作。

在不执行某些复杂操作的情况下,您应该能够按照以下思路执行操作:

mySubset.listenTo(myCollection, 'all', function() {
  this.trigger.apply(this, arguments);
});
您将侦听集合中的所有事件,并将它们与您的子集一起回显。虽然我想这只是解决方案的一半,因为您的子集不会被更新,您会在侦听器中对所有子集进行筛选。

另一种只执行一次任务的解决方案是,让您的集合侦听其自己的
添加
事件,过滤新模型,并触发一个自定义事件,以便只有实际需要执行某项操作的子集才能执行某项操作。

那么您想查看原始集合的更新视图吗?当您执行
notAsManyTasks时,您希望发生什么。添加({id:6,projectId:1,complete:true})
?理想情况下,它应该在
lotsOfTasks
之间同步,因为
notAsManyTasks
是前者的“子”(子集)。不过,现在我不在乎,因为我总是可以
lotsOfTasks.add(…)
那么你想查看原始集合并随之更新吗?当您执行
notAsManyTasks时,您希望发生什么。添加({id:6,projectId:1,complete:true})
?理想情况下,它应该在
lotsOfTasks
之间同步,因为
notAsManyTasks
是前者的“子”(子集)。不过,现在我不在乎,因为我总是能做
lotsOfTasks.add(…)
我不得不做一个小改动(将
这个
作为第三个参数传递进来),您的解决方案很好-谢谢!我不得不做了一个小小的改动(将
这个
作为第三个参数传递进来),你的解决方案很好——谢谢!