Polymer要素で子親間の通信を実現したい。
ここに私のindex.html
<proto-receiver data="message">
<proto-element data="message"></proto-element>
</proto-receiver>
両方の要素にそれぞれの「データ」プロパティがあります
properties: {
data: {
value: 'my-data',
notify: true,
}
},
親であるプロトレシーバーでは、単純なクリックを処理して「データ」を更新します
<template>
<span on-tap="onClick">proto receiver: {{data}}</span>
<content></content>
</template>
onClick: function () {
this.data = 'new-message';
},
ここで述べたように、変更を子要素にも反映させたいと思います。
これを実現するには、子要素にセッターを渡し、次のように呼び出します。これは、私が思うに、それが行われるべき方法ではありません。
Polymer.Base.$$('body').querySelector('proto-element').setData(this.data);
私が間違っていること
ありがとう
アップデート:
ここに来る方へ。これを行う適切な方法は、イベントを使用することです。
this.fire('kick', {kicked: true});
Polymer 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
})