4

Доброго времени суток.

Не могу найти инфо, о том, как можно отслеживать нажатие на клавиши.

Что я имею ввиду:

$('html').keydown(function(e){ //отлавливаем нажатие клавиш
  if (e.keyCode == 13) { //если нажали Enter, то true
    alert("Ура нажали Enter");
  }
});

Вот пример кода на jquery как мы могли отслеживать глобальное нажатие на enter, как можно подобное организовать на vue?

Спасибо

k0mar
  • 3,647
  • 5
  • 25
  • 47
  • 3
    просто на корневом компоненте объявить событие @keyup.enter – etki Jan 22 '18 at 14:24
  • @etki ну такое) не получается, я б не задавал вопрос если б так получилось) Если повесить на инпут событие, то все работает, но мне интересно на все окно – k0mar Jan 22 '18 at 14:29

1 Answers1

3

Придумал как запилить такую штуку, пора уже покупать себе уточку и ей задавать вопросы :)

Вот таким макаром решил:

const app = new Vue({
    el: '#app',

    created() {
        document.addEventListener('keydown', this.onKeyDown)
    },

    beforeDestroy() {
        document.removeEventListener('keydown', this.onKeyDown)
    },

    methods: {
        onKeyDown(e) {
            console.log('keydown!');
            console.log(e.target);
        }
    },
});

Суть в том, что вьюха уже сама себе забиндила клавиши и нужно сначала удалить ивент, а потом добавить свой.

k0mar
  • 3,647
  • 5
  • 25
  • 47
  • Выходит что своего решения у Vue.js нет? Это же по сути мешает сохранить чистоту логики и абстрагироваться от деталей реализации событий DOM... – Vas Mil Feb 08 '18 at 18:39