Избягвайте заснемането на събития

Опитвам се да избегна улавяне на събития в полимерен персонализиран елемент, така че искате да задействате събитие само когато е провокирано от ['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> има свой собствен манипулатор на събития, избран от ядрото.
  • <my-child-element> няма нито скрипт, нито манипулатори на събития.

Моята цел:

  • Само когато е избран елемент от <my-parent-element>, събитието се задейства.
  • Искам да запазя независимостта на компонентите, така че бих искал да не променям детето.

Ситуация

Въз основа на този отговор спирам метода за проверка на получения артикул , но мисля, че не е правилното решение...

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

...защото бих искал дори да не задействам метода.

Можете да го възпроизведете в този Plunker. 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
Точно това използвам. Можете да го проверите в Plunker. - person Mario Levrero; 15.01.2015