Задать вопрос
@vetsmen

Как сделать обработчик события только при условии?

Как сделать обработчик v-on:click только при каком-либо условии?
Рендерю блоки с кнопками циклом v-for="block in blocks", внутри которых вешается обработчик v-on:cilick
Как сделать так, чтобы он вешался только при удовлетворении условия block.data == true?
Проверять в самом методе при клике считаю глупым, ибо на странице будут висеть просто так обработчики.
  • Вопрос задан
  • 1433 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 2
coderisimo
@coderisimo
Возможно несколько решений.
Например, что мешает уже в обработчике смотреть есть ли block.data == true. Передавать block.data прямо в обработчик ? И уже в обработчике смотреть block.data == true? Если нет - обработчик дальше не работает, если да , то делает свое дело.

Есть еще возможность присваивать обработчик в зависимости от какого-то условия, т.е

<div id="app">
  <button @click="bool ? one() : two()">Click</button>
</div>


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

Ответ написан
0xD34F
@0xD34F Куратор тега Vue.js
v-on="условие ? { событие: обработчик } : {}"

или (но так vue будет кидать предупреждение, что обработчик "invalid")

v-on="{ событие: условие ? обработчик : null }"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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