>我试图避免在聚合物自定义元素中捕获事件,因此我想仅在元素中包含的 ['items'] 引发时才触发事件。
我有两个不同的自定义元素。这两个自定义元素都是扩展核心选择器。 一个是包裹另一个。
所以我有这样的东西:
<my-parent-element>
<parentItem>I'm a parent
<my-child-element>
<childItem>I'm a child</childItem>
<childItem>I'm a child</childItem>
<childItem>I'm a child</childItem>
</my-child-element>
</parentItem>
<parentItem>I'm a parent</parentItem>
<parentItem>I'm a parent</parentItem>
</my-parent-element>
自定义元素定义
-
<my-parent-element>
有自己的核心选定事件处理程序。 -
<my-child-element>
没有脚本,也没有事件处理程序。
我的目标:
- 仅当选择了
<my-parent-element>
中的项目时,事件才引发。 - 我想保持组件的独立性,所以我不想修改子组件。
情况
基于这个答案,我正在停止检查收到的项目的方法,但我认为这不是一个正确的解决方案......
onCoreSelect: function (event, detail, sender) {
if (!detail.item.classList.contains('child')) {
return; //Dislike!
}
);
。因为我甚至不想触发该方法。
您可以在此 Plunker 中重现它。onCoreSelect 会写详细信息,但只有选择父母才能这样做。如您所见,单击任何子项时,它会触发事件。
感谢!
仅当使用声明性事件映射完成"由项目引发"时才调用方法。
这是它的文档和示例:
https://www.polymer-project.org/docs/polymer/polymer.html#declarative-event-mapping