如何将事件侦听器添加到 Polymer 中的自定义元素 属性?

How to add an event listener to a custom element property in Polymer?

我有一个带有 data 属性 的子自定义元素。
我的目标是在父元素的上下文中为此 属性(使用 javascript 而不是 {{}} 数据绑定语法)分配一个事件侦听器。

我搜索这样的东西:

ready(){
    this.addEventListener(this.$.childElememt.data, _onChildDataChange);
},

_onChildDataChange() {   
   //called when data property of child elememt changes     
}

在 Polymer 中,设置了 notify: true 的属性将导致元素触发其父元素可以监听的非冒泡 <property>-changed 事件。

我怀疑您可以通过执行以下操作手动收听此事件(前提是子 属性 设置为通知):

ready() {
    this.$.childElement.addEventListener('data-changed', this._onChildDataChange.bind(this));
},

_onChildDataChange() {   
   //called when data property of child element changes     
}

但是,这实际上等同于仅在子对象上使用双向数据绑定语法,在父对象上使用观察者 属性,因此我建议您尽可能这样做。数据绑定基本上已经为您做了完全相同的事情。