此项目使用BackboneJS和BackboneLayout。
有一个相当复杂的视图层次结构 - 在某些情况下有四到五个层次。
我有一种情况,我希望一个视图在另一个视图中触发更改,但是监听器不是一个选项。 (导致听众太多,杀死记忆)。
Top -> X -> Y
Top -> B -> C -> D -> E
Top
是顶级视图,其中包含一个X
视图,其中包含多个Y
视图。
Top
视图还包含一个B
视图,其中包含多个B
视图,每个视图包含多个C
视图,每个视图包含多个D
视图,每个视图都包含多个E
视图。
Y
视图中的更改需要影响当前呈现的所有E
视图。如果不是前面提到的问题,这对听众来说是完美的。因此,我正在寻找另一种方法来完成同样的事情。
我正在考虑让Top
视图找到E
类型的所有子项,或者沿着这些行查找的内容。其他解决方案也是受欢迎的。
感谢。
答案 0 :(得分:0)
是的,我有Top
维护所有E
个实例的列表 - 这只是应用程序代码中的内容,可能在E.initialize()
中,或者通过您自己的方法在视图中添加/删除节点heirarchy,如果你有 - 并且它是自己的事件处理程序,它监听所有Y上的change
事件,并重新呈现E
s 。如果听取Y
更改的费用过高,请从Y-change
中的应用代码触发Top
上的自定义Y
(或其他)事件,然后收听那个事件。
让E实例列表不同步很容易,但是,这就是侦听器存在的原因。仔细检查并确保Top在B->C->D->E
树下的每个点都有钩子,并且知道在发生变化时对E
的列表进行了哪些更改(基本上是非规范化的)。