需要在父级“集合”视图内的所有子视图上调用.delegateEvents()
,以便在从页面中移除父视图后重新委派事件,然后放回去。Backbone.js - 访问父级“集合”视图内的所有子视图
我可以看到这样做的两种方式,这两种不健全相当合理了我的正确做法方面:
- 每当
addOne(
)被称为父视图,救子视图这只是创建到一个列表。当事件需要在视图重新添加到页面后重新委派时。使用数组向后滚动该列表并在每个子视图项上调用.delegateEvents()
。这种方法的问题是创建一个单独的数组来保存视图内的所有内容,当视图已经有一个Backbone认可的方式来影响它的子视图时通过this.collection.each()
- 使用视图内部的
View.collection.each()
滚动每个孩子的模型。在每个模型上触发一个事件,使其相应的视图自己调用.delegateEvents()
。这种方法的问题在于,纯粹以视图为导向的行为正在通过模型进行路由。
这两种方法都不错,还是有更好的方法,我应该这样做?
非常感谢!
我们目前正在使用相同的问题所困扰,并展望[木偶](https://github.com/ derickbailey/backbone.marionette)看看这个问题是如何解决的。 Derick有一个特殊的'CollectionView',据说可以处理这些事情。 – 2012-08-01 21:22:03
@TorstenWalter - 只花了几个小时阅读Marionette。你们是否决定采用它还是比任何潜在的问题? – 2012-08-02 12:51:16
由于我们刚刚开始过境一个项目,无论如何都必须触及所有视图,因此实施木偶可能对我们来说是最简单的解决方案。目前,我们已经实现了您的第一个解决方案,并在'reset','remove'和'destroy'上更新了视图集合。 – 2012-08-02 16:09:37