【发布时间】:2019-07-17 18:33:43
【问题描述】:
我在我的应用程序中几乎所有地方都使用了铁信号。
现在我正在将聚合物 1 应用程序升级到聚合物 2,我发现 <iron-signals> 不再使用。
实现相同目标的替代路径是什么。我基本上想在我的网络应用程序的不同页面之间传递数据。
【问题讨论】:
标签: polymer polymer-2.x
我在我的应用程序中几乎所有地方都使用了铁信号。
现在我正在将聚合物 1 应用程序升级到聚合物 2,我发现 <iron-signals> 不再使用。
实现相同目标的替代路径是什么。我基本上想在我的网络应用程序的不同页面之间传递数据。
【问题讨论】:
标签: polymer polymer-2.x
您应该能够简单地从一个元素中分派window 上的事件并在其他元素中侦听它们。
// Element 1
class FooElement extends Polymer.Element {
connectedCallback() {
super.connectedCallback()
}
ready() {
super.ready()
window.addEventListener('bar-was-called', e => {
console.log(e.detail) // logs 'hello-bar'
})
}
}
// Element 2
class BarElement extends Polymer.Element {
connectedCallback() {
super.connectedCallback()
}
ready() {
super.ready()
}
doBar() {
window.dispatchEvent(new CustomEvent('bar-was-called', {
detail: 'hello-bar'
}))
}
}
请记住,iron-signals 被删除是有原因的。 AFAIK 是因为它促进了难以调试的通信架构。
来自<iron-signals> README:
注意:只要您可以使用控制器(父元素)来代替通信,请避免使用铁信号。
【讨论】:
聚合物 1 中已弃用铁信号。
用铁元代替铁信号的使用。
【讨论】: