此项目使用BackboneJS和BackboneLayout。
有一个相当复杂的观点层次——在某些情况下有四到五个层次。
我有一种情况,我希望一个视图触发另一个视图的更改,但监听器不是一种选择。(导致侦听器过多,扼杀内存)。
Top -> X -> Y
Top -> B -> C -> D -> E
Top
是顶层视图,具有一个X
视图,具有多个Y
视图。Top
视图还包含一个B
视图,其中包含多个B
视图,其中每个视图包含多个C
视图,其中每一个视图包含多个子D
视图,其中其中每个视图包括多个E
视图。
Y
视图中的更改需要影响当前渲染的所有E
视图。如果不是前面提到的问题,这对听众来说将是完美的。因此,我正在寻找另一种方法来完成同样的事情。
我正在考虑让Top
视图找到它的所有类型为E
的子对象,或者类似的东西。其他解决方案也很受欢迎。
谢谢。
是的,我会让Top
维护一个所有E
实例的列表-这只是应用程序代码中的内容,可能在E.initialize()
中,或者通过您自己的方法在视图层次结构中添加/删除节点(如果您有)-它是自己的事件处理程序,侦听所有Y上的change
事件,并重新渲染E
s。如果侦听Y
更改的成本太高,请从Y
中的应用程序代码在Top
上触发一个自定义Y-change
(或其他任何)事件,并让Top侦听该事件。
很容易使E实例的列表不同步,但是,好吧,这就是侦听器存在的原因。小心行事,确保Top已经钩住了B->C->D->E
树下的每一点,并知道当发生变化时要对其(本质上是非规范化的)E
列表进行哪些更改。