Возьмите этот пример, который очень похож на ваш: не показывайте li
, которые не нужны. Сочетание v-for
и v-if
прекрасно работает, если не лучшая практика. Однако есть более простой способ.
<h2>Items:</h2>
<ol id="list">
<li v-for="item in items" v-if="visible.includes(item)" :id="'item-'+item">
{{ item }}
</li>
</ol>
https://jsfiddle.net/oLjuy5bv/1/
Что мы можем сделать вместо этого, так как в двух других состояниях ответа создается вычисляемый метод и вычислите список для v-for
и удалите v-if
.
<h2>Items:</h2>
<ol id="list">
<li v-for="item in visible_items" :id="'item-'+item">
{{ item }}
</li>
</ol>
computed: {
visible_items () {
return this.items.filter(item => this.visible.includes(item))
}
},
https://jsfiddle.net/17Ln5mw8/
То, что вы ищете, то является чем-то вот так, который использует метод из-за контекста idx
и, возможно, game
(я не знаю логики c конкретно):
<transition name="fade">
<p
v-for="(quote, idx) in gameQuotesByIdx(idx)"
:key="`game-quote-${idx}`"
class="quote-box__current_quote"
>"{{ quote.content }}"</p>
</transition>
methods: {
gameQuotesByIdx(idx) {
return ...
}
},
Где, я думаю, у вас может быть проблема является реактивностью, что означает, что компонент может не реагировать на изменения в состоянии массива (что для меня разрешено выше). Тогда, возможно, вы захотите рассмотреть этот рефакторинг.