聚合物中的横向交流

Ren*_*aud 3 javascript model-view-controller javascript-events polymer

这是问题所在:

任何两个Polymer元素可能需要通信.没有假设这些元素在DOM(或阴影DOM)中的位置,这意味着一个事件不能简单地冒泡到另一个元素.

实现这一目标的好方法是让事件冒泡到根节点,然后在根节点上触发广播事件以供其他元素监听.

然而,这种方法打破了封装,似乎违背了Polymer的整体设计.例如,AngularJS提供了一个事件广播器,可以防止控制器不必要地保留对根节点的引用.

这种方法可以通过聚合物实现吗?否则可以用不同的方法解决这个问题吗?

rob*_*son 7

你应该可以使用 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)

  • 不,它被重命名为铁信号 (3认同)
  • 聚合物信号已被重命名为核心信号 (2认同)