避免事件捕获



>我试图避免在聚合物自定义元素中捕获事件,因此我想仅在元素中包含的 ['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

最新更新