【发布时间】:2020-10-23 20:53:33
【问题描述】:
问题来了:
任何两个 Polymer 元素都可能需要通信。没有假设这些元素可能在 DOM(或影子 DOM)中的什么位置,这意味着一个事件不能简单地冒泡到另一个元素。
实现这一点的旧方法是让事件冒泡到根节点,然后在根节点上触发 broadcast 事件以供其他元素收听。
然而,这种方法破坏了封装,似乎与 Polymer 的整体设计背道而驰。例如,AngularJS 提供了一个事件广播器,可以防止控制器不必要地保留对根节点的引用。
这种方法可以用 Polymer 实现吗?否则可以用不同的方法解决吗?
【问题讨论】:
-
链接到 Polymer issue
-
Polymer 希望您避免横向通信,并让所有通信由控制器进行调解。 IOW,有一个明确的容器,它知道两个目标并管理它们的通信。作为一种架构,起初它可能感觉像是额外的工作,但最终会提供更强大的设计。
-
@ScottMiles 这就是我的意思,如果措辞具有误导性,请见谅。看起来你可以在 Polymer 中使用元素作为服务,这甚至比控制器更好。
标签: javascript model-view-controller polymer dom-events