Como posso repetir um loop via v-for
X (por exemplo, 10) vezes?
// want to repeat this (e.g.) 10 times
<ul>
<li v-for="item in shoppingItems">
{{ item.name }} - {{ item.price }}
</li>
</ul>
A documentação mostra:
<ul>
<li v-for="item in 10">{{ item }}</li>
</ul>
// or
<li v-for="n in 10">{{ n }} </li>
// this doesn't work
<li v-for="item in 10">{{ item.price }}</li>
mas de onde vue sabe a origem dos objetos? Se eu renderizá-lo como o documento diz, obtenho o número de itens e itens, mas sem conteúdo.
javascript
vue.js
vuejs2
v-for
MikeCaine
fonte
fonte
v-for
; quando é chamado contra um inteiro e quando é chamado contra um array. Misturar esses modos e tentar usar um número inteiro para controlar o acesso ao conteúdo de uma matriz provavelmente causará problemas. Se você precisar de um subconjunto da matriz, poderá filtrá-lo.Respostas:
Você pode usar um índice em um intervalo e acessar a matriz por meio de seu índice:
Você também pode verificar a documentação oficial para obter mais informações.
fonte
<span v-for="i in 5">{{i}} </span>
=>1 2 3 4 5
. Use<span v-for="(e, i) in 5">{{i}} </span>
para obter 0-indexação.Eu resolvi isso com a ajuda de Dov Benjamin assim:
E outro método, para V1.x e 2.x de vue.js
fonte
Tive de acrescentar
parseInt()
para dizer a v - pois estava olhando para um número.<li v-for="n in parseInt(count)" :key="n">{{n}}</li>
fonte
Você pode usar o método de fatia JS nativo:
<div v-for="item in shoppingItems.slice(0,10)">
Com base na dica do guia de migração: https://vuejs.org/v2/guide/migration.html#Replacing-the-limitBy-Filter
fonte
O mesmo vale para v-for no intervalo :
<li v-for="n in 20 " :key="n">{{n}}</li>
fonte
No 2.2.0+, ao usar v-for com um componente, uma chave agora é necessária .
Fonte
fonte