【发布时间】:2018-01-11 19:29:25
【问题描述】:
我有一个 parentComponent 和几个 childComponents,如下所示:
<parent-component>
<child-component> child_1 </child-component>
<child-component> child_2 </child-component>
</parent-component>
父组件:
Polymer({
is: 'parent-component',
listeners: {
'EVT_CHILD_ATTACHED': 'onChildAttached'
'EVT_CHILD_DETACHED': 'onChildDetached'
},
onChildAttached: function () {
console.log('child elem is ATTACHED');
},
onChildDetached: function () {
console.log('child elem is DETACHED');
}
})
子组件:
Polymer({
is: 'child-component',
attached: function () {
this.fire('EVT_CHILD_ATTACHED');
},
detached: function () {
this.fire('EVT_CHILD_DETACHED');
}
});
成功:当向父组件添加一个“new”子组件时,子组件的聚合物生命周期'attached'方法被调用并且事件'EVT_CHILD_ATTACHED' 被触发,最终父组件能够成功监听并记录 'child elem is ATTACHED'。
失败:当一个 "existing" 子组件被移除时,我可以看到子组件的聚合物生命周期 'detached' 方法被调用并且事件 ' EVT_CHILD_DETACHED' 也会被触发。但是父组件的 onChildDetached() 永远不会触发,也没有显示日志。
Qn:当任何子组件“分离”时,如何让父组件做出反应/监听?
注意:子组件可以动态添加或包裹在循环条件或 dom-if 条件下,为简单起见,我删除了此类逻辑。
【问题讨论】:
标签: javascript polymer event-listener