Избегайте захвата событий

Я пытаюсь избежать захвата событий в пользовательском элементе полимера, поэтому я хотите инициировать событие только тогда, когда оно провоцируется ['items'], содержащимися в элементе.

У меня есть два разных пользовательских элемента. Оба пользовательских элемента являются расширением core-selector. . Один оборачивает другого.

Итак, у меня есть что-то вроде:

<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> имеет собственный обработчик события core-Selected.
  • <my-child-element> не имеет скрипта и обработчиков событий.

Моя цель:

  • Событие запускается только при выборе элемента из <my-parent-element>.
  • Я хочу сохранить независимость компонентов, поэтому я не хотел бы изменять дочерний элемент.

Ситуация

Основываясь на этом ответе, я останавливаю метод проверки полученного элемента , но я думаю, что это не правильное решение...

onCoreSelect: function (event, detail, sender) {
                if (!detail.item.classList.contains('child')) {
                   return;   //Dislike!
                }
);

... потому что я хотел бы даже не запускать метод.

Вы можете воспроизвести его в этом планкере. onCoreSelect записывает детали, но это должны делать только выбранные родители. Как видите, при нажатии на любой дочерний элемент вызывается событие.

Спасибо!


person Mario Levrero    schedule 14.01.2015    source источник


Ответы (1)


Вызов методов только тогда, когда «спровоцирован элементом», выполняется с использованием декларативного сопоставления событий.

Вот документы и пример на нем:

https://www.polymer-project.org/docs/polymer/polymer.html#declarative-event-mapping

person Goce Ribeski    schedule 15.01.2015
comment
Это именно то, что я использую. Вы можете проверить это в плункере. - person Mario Levrero; 15.01.2015