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

Find all views of a particular type presently displayed in BackboneJS or BackboneLayout

本文关键字:类型 视图 BackboneLayout 显示 BackboneJS 查找      更新时间:2023-09-26

此项目使用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事件,并重新渲染Es。如果侦听Y更改的成本太高,请从Y中的应用程序代码在Top上触发一个自定义Y-change(或其他任何)事件,并让Top侦听该事件。

很容易使E实例的列表不同步,但是,好吧,这就是侦听器存在的原因。小心行事,确保Top已经钩住了B->C->D->E树下的每一点,并知道当发生变化时要对其(本质上是非规范化的)E列表进行哪些更改。