@billt

Как во вью повесить обработчик событий в зависимости от проверки?

Есть таблица, мне нужно по нажатию tab в последнем td вызывать метод, td рендерятся через v-for, как повесить нужный момент на нужный td?
  • Вопрос задан
  • 274 просмотра
Решения вопроса 2
boratsagdiev
@boratsagdiev
Первое что пришло в голову, но думаю есть и более эффективный вариант.

<table class="table">
	<tr>
		<td v-for="(user, index) in users" v-if="index !== users.length - 1">{{ user.name }}</td>		
		<td v-for="(user, index) in users" v-if="index === users.length - 1" @click="tabAction">{{ user.name }}</td>
	</tr>
</table>


UPD: ну или вынести в метод проверку, чтобы не засорять условиями шаблон
Но вообще там ниже 0xD34F предложил решение получше =)

<td v-for="(user, index) in users" v-if="!isThisLastIndex(users, index)">{{ user.name }}</td>		
<td v-for="(user, index) in users" v-if="isThisLastIndex(users, index)" @click="tabAction">{{ user.name }}</td>
...

isThisLastIndex(users, index) {
	return index === users.length - 1
}
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега Vue.js
<td v-for="(n, i) in row">
  <input @keydown.tab="i === row.length - 1 ? onTab(n) : null">
</td>

https://jsfiddle.net/qrnh9s47/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AnneSmith
самая ленивая
если вы не поленитесь каждому элементу сгенерировать уникальный id, то у вас никогда не будет проблем обратиться к любому элементу в любое время по любому событию, а ваш html код будет девственно чист и не забит вот этим всем мусором
Ответ написан
planc
@planc
google:
vue if last child

https://stackoverflow.com/a/41629937/5671005

по аналогии биндим функцию или null
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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