2016-09-01 2 views
0

Шаблон: Как остановить распространение ключевых событий в Аурелии?

<template> 
    <input keydown.delegate='onKeydown($event)' keyup.delegate='onKeyup($event)'/> 
</template> 

The View Модель:

export class MyInput { 
    onKeydown(e) { 
     e.stopPropagation(); 
     // return false; // this does't matter as it only prevents default 
    } 
    onKeyup(e) { 
     console.log(e); // will still fire even [stopPropagation] was called 
    } 

} 

Ожидаемое поведение это было бы: onKeyup не срабатывает, но я не получаю это ни на что.

Как прекратить распространение ключевых событий в Аурелии?

+0

на основе Эшли Грант ответ: Это ожидаемое поведение. 'stopPropagation' действительно остановит его от распространения верхнего уровня. Чтобы остановить 'keyup', чтобы произойти на том же элементе, используйте' stopImmediatePropagation' [MDN: Event.stopImmediatePropagation] (https://developer.mozilla.org/en-US/docs/Web/API/Event/ stopImmediatePropagation) – bigopon

ответ

1

Ожидаемое поведение. См. Этот текст: https://gist.run/?id=3b98d602713a9a80a28834f61db6a73f, где я использую стандартные атрибуты HTML onkeyup и onkeydown, чтобы присоединить обработчики событий для запуска стандартных функций JavaScript.

0

Я обнаружил, что с помощью

e.stopImmediatePropagation() 

работает вместо

e.stopPropagation() 
+0

Я уже прокомментировал это в моем вопросе, но tks :) – bigopon

Смежные вопросы