查找BackboneJS或BackboneLayout中当前显示的特定类型的所有视图

时间:2013-08-12 07:08:42

标签: javascript backbone.js backbone-views backbone-layout-manager

此项目使用BackboneJSBackboneLayout

有一个相当复杂的视图层次结构 - 在某些情况下有四到五个层次。

我有一种情况,我希望一个视图在另一个视图中触发更改,但是监听器不是一个选项。 (导致听众太多,杀死记忆)。

Top -> X -> Y
Top -> B -> C -> D -> E

Top是顶级视图,其中包含一个X视图,其中包含多个Y视图。 Top视图还包含一个B视图,其中包含多个B视图,每个视图包含多个C视图,每个视图包含多个D视图,每个视图都包含多个E视图。

Y视图中的更改需要影响当前呈现的所有E视图。如果不是前面提到的问题,这对听众来说是完美的。因此,我正在寻找另一种方法来完成同样的事情。

我正在考虑让Top视图找到E类型的所有子项,或者沿着这些行查找的内容。其他解决方案也是受欢迎的。

感谢。

1 个答案:

答案 0 :(得分:0)

是的,我有Top维护所有E个实例的列表 - 这只是应用程序代码中的内容,可能在E.initialize()中,或者通过您自己的方法在视图中添加/删除节点heirarchy,如果你有 - 并且它是自己的事件处理程序,它监听所有Y上的change事件,并重新呈现E s 。如果听取Y更改的费用过高,请从Y-change中的应用代码触发Top上的自定义Y(或其他)事件,然后收听那个事件。

让E实例列表不同步很容易,但是,这就是侦听器存在的原因。仔细检查并确保Top在B->C->D->E树下的每个点都有钩子,并且知道在发生变化时对E的列表进行了哪些更改(基本上是非规范化的)。