Ren*_*aud 3 javascript model-view-controller javascript-events polymer
这是问题所在:
任何两个Polymer元素可能需要通信.没有假设这些元素在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!"});
Run Code Online (Sandbox Code Playgroud)
此事件冒泡到文档处理程序构造并将新事件Polymer-signal-foo分派给所有实例.应用程序的某些部分或其他Polymer元素可以声明一个元素来捕获命名信号:
<polymer-signals on-polymer-signal-foo="{{fooSignal}}"></polymer-signals>
Run Code Online (Sandbox Code Playgroud)