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(…)
我不得不做一个小改动(将这个作为第三个参数传递进来),您的解决方案很好-谢谢!我不得不做了一个小小的改动(将这个作为第三个参数传递进来),你的解决方案很好——谢谢!