¿Cómo puedo repetir un bucle a través de v-for
X (por ejemplo, 10) veces?
// want to repeat this (e.g.) 10 times
<ul>
<li v-for="item in shoppingItems">
{{ item.name }} - {{ item.price }}
</li>
</ul>
La documentación muestra:
<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>
pero ¿de dónde conoce vue el origen de los objetos? Si lo renderizo como dice el documento, obtengo la cantidad de elementos y elementos, pero sin contenido.
javascript
vue.js
vuejs2
v-for
MikeCaine
fuente
fuente
v-for
; cuando se llama a un número entero y cuando se llama a una matriz. Es probable que la combinación de esos modos y el uso de un número entero para controlar el acceso al contenido de una matriz cause problemas. Si necesita un subconjunto de la matriz, puede filtrarlo.Respuestas:
Puede usar un índice en un rango y luego acceder a la matriz a través de su índice:
También puede consultar la Documentación Oficial para obtener más información.
fuente
<span v-for="i in 5">{{i}} </span>
=>1 2 3 4 5
. Úselo<span v-for="(e, i) in 5">{{i}} </span>
para obtener la indexación 0.Lo he resuelto con la ayuda de Dov Benjamin así:
Y otro método, tanto para V1.xy 2.x de vue.js
fuente
Tuve que agregar
parseInt()
para decirle a v-porque estaba mirando un número.<li v-for="n in parseInt(count)" :key="n">{{n}}</li>
fuente
Puede utilizar el método de segmento JS nativo:
<div v-for="item in shoppingItems.slice(0,10)">
Basado en el consejo de la guía de migración: https://vuejs.org/v2/guide/migration.html#Replacing-the-limitBy-Filter
fuente
Lo mismo ocurre con v-for en rango :
<li v-for="n in 20 " :key="n">{{n}}</li>
fuente
En 2.2.0+, cuando se usa v-for con un componente, ahora se requiere una clave .
Fuente
fuente