Groyreg
@Groyreg
Front-end

ForEach внутри директивы v-if?

Можно ли как-то использовать метод .forEach внутри директивы v-if. Если да, не могли бы привести пример.
  • Вопрос задан
  • 342 просмотра
Пригласить эксперта
Ответы на вопрос 3
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Создайте лучше метод, который будет вызываться в v-if и туда передавайте что нужно для расчета
Ответ написан
Комментировать
@Result007
P|-|P
Попробуйте так, исходя из вашего примера
<div class="event" v-for="activity in date.activities" v-if="types.id == activity.type_id">
</div>
Ответ написан
dubr
@dubr
пыхарь
В доке пишут:

When they exist on the same node, v-for has a higher priority than v-if. That means the v-if will be run on each iteration of the loop separately.

То есть выполняется цикл, и на каждом шаге - проверка. Чтобы об этом не думать, можно тупо не использовать эти директивы вместе, а писать явно. Для этого есть встроенный "прозрачный" тег template:

<template v-if="shouldShowAllTags()">
   <a v-for="tag in tags">{{tag}}</a>
</template>
...
<template v-for="tag in tags">
   <a v-if="shouldShowThisTag(tag)">{{tag}}</a>
</template>


Теперь:
1) мы можем добавить v-else, если понадобится
2) человек, не читавший доку по ссылке выше, поймет как оно работает "на глаз", без экспериментов :)

UPD: Перечитал комменты в соседнем ответе, вам оказывается надо другое =) Но все равно оставлю, в назидание будущим поколениям ))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы