这是问题所在:
任何两个聚合物元素都可能需要通信。这些元素可能在DOM(或影子DOM)中的位置没有做任何假设,这意味着一个事件不能简单地冒泡到另一个元素。
实现此目的的一种好方法是让事件冒泡到根节点,然后在根节点上触发广播事件,以供其他元素侦听。
但是,这种方法破坏了封装,似乎违背了Polymer的整体设计。例如,AngularJS提供了一个事件广播器,可以防止控制器不必要地保留对根节点的引用。
聚合物可以实现这种方法吗?否则可以用其他方法解决吗?
您应该可以使用 polymer-signals
http://www.polymer-project.org/articles/communication.html#using-ltpolymer-signalsgt
引用文档:
您的元素触发聚合物信号并在其有效负载中命名信号:
this.fire('polymer-signal', {name: "foo", data: "Foo!"});
此事件起泡,直到文档记录到处理程序在哪里构造并向的所有实例分配新事件polymer-signal-foo。应用程序的某些部分或其他Polymer元素可以声明一个元素来捕获命名的信号:
<polymer-signals on-polymer-signal-foo="{{fooSignal}}"></polymer-signals>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句