Как добавить события к массиву DOM элементов во Vue?

Допустим есть inline-template:
<list id="list" inline-template>
  <ul>
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
</list>

И в компоненте есть метод:
methods: {
  foo() {
    alert('hey')
  }
}

Как теперь повесить событие click на все элементы li, которое вызовет метод foo, при этом не прописывая в шаблоне @click каждому элементу li.

Вообщем самый простой и эффективный вариант оказался таким:
let vm = this;
  let items = vm.$el.querySelectorAll('li');
  items.forEach(item => {
    item.addEventListener('click', vm.foo());
  });


Всем спасибо.
  • Вопрос задан
  • 473 просмотра
Решения вопроса 1
lavezzi1
@lavezzi1
Либо так:
<li v-for="(item, index) in items" @click="foo(item)">{{ `item ${index + 1}` }}</li>


Либо черед делегирование событий.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Нативно через addEventListener.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы