我正在 Google 闭包中开发一个网络应用程序,其结构如下所示:
App
+ Control Pane
| + Search Box
| + Search Button
+ Result Pane
+ Results
+ Next Page Link
实际的组件结构要复杂得多。重要的一点是,整个组件树中有许多不同的组件可以启动某些操作。在此示例中,按 enter in Search Box
、按Search Button
或按Next Page
all 需要进行查询。
这很容易处理。组件树中任何地方的任何孩子都可以做
this.dispatchEvent(App.EventType.ACTION, ...)
App
当事件向上传播时将能够收听它。问题是另一个方向:当App
从它的查询中接收到数据时,它必须将它推送给所有的孩子。
App
尝试直接推送到Search box
and似乎很脆弱Results
,因为它们在组件树中的位置可能会发生变化。我想做的是触发一个App.EventType.DATA_RECEIVED
事件并让所有孩子(和子孩子等)听到它。
我能找到的在谷歌关闭中做到这一点的唯一方法是创建一个全局公共单例实例App
并用作所有App.EventType.DATA_RECEIVED
事件的源,或者App
深入到所有子项和子项。
这两者都以自己的方式混乱而脆弱。
有没有一种简单的方法可以在关闭时分派向下冒泡的事件?