我想用 Polymer 元素实现子父级之间的通信。
这是我的 index.html
<proto-receiver data="message">
<proto-element data="message"></proto-element>
</proto-receiver>
两个元素都有各自的“数据”属性
properties: {
data: {
value: 'my-data',
notify: true,
}
},
在 proto-receiver 中,这是我通过处理简单的点击来更新“数据”的父级
<template>
<span on-tap="onClick">proto receiver: {{data}}</span>
<content></content>
</template>
onClick: function () {
this.data = 'new-message';
},
我希望更改也能传播到子元素,正如这里提到的那样。
我通过在我的子元素中传递一个 setter 并像这样调用它来实现这一点。我猜这不是应该的方式。
Polymer.Base.$$('body').querySelector('proto-element').setData(this.data);
我做错了什么
谢谢
更新:
对于那些来这里的人。这样做的正确方法是使用事件。
this.fire('kick', {kicked: true});
聚合物 2.x(简单的 javascript)
this.dispatchEvent(new CustomEvent('kick', {detail: {kicked: true}}));
在这两种情况下,接收者都应该实现常规的 addEventListener
document.querySelector('x-custom').addEventListener('kick', function (e) {
console.log(e.detail.kicked); // true
})