Directiva v-for en Vue JS

Resumen

En este post te mostraré cómo repetir cosas en la vista de una app con Vue.JS usando v-for.

v-for permite iterar arreglos, objetos y también hacer ciclos.

Veremos cómo usar v-for, además de proporcionar la clave con :key y finalmente tomar el índice y el valor por separado.

Nota: a través de los ejemplos usaré Bootstrap 4 para un mejor diseño, aunque esto no va a interferir con el tema principal de v-for y Vue.

Sintaxis de v-for

La sintaxis de v-for en Vue.js es:

v-for="elemento in coleccion"

Si se quiere obtener el índice se puede con:

v-for="(elemento, indice) in coleccion"

Y en caso de repetir cierta cantidad de veces:

v-for="numero in 5" (bueno, en este caso se repetiría 5 veces)

Ejemplo 1 – Directiva v-for con arreglo

La directiva se coloca dentro de una etiqueta HTML que se quiere repetir. Vamos a ver un ejemplo sencillo con una lista:

Comenzamos declarando nuestro contenedor de app en la línea 17.

En la línea 21 tenemos a v-for, que va a repetir la variable (disponible solo en la vista) llamada mascota en los elementos que haya en mascotas.

Dentro de la lista (elemento li) accedemos a la variable y la mostramos.

El JavaScript para esto es el siguiente:

Simplemente declaramos el arreglo mascotas en data.

Nota: si el arreglo está vacío, no se genera ningún error.

Recorrer arreglo con Vue.JS usando v-for

Puedes probar el ejemplo aquí.

Ejemplo 2 – repetir sobre objeto usando Vue.JS

Además de un arreglo, también se pueden repetir los valores de un objeto o diccionario de JavaScript.

Por ejemplo. Tenemos la siguiente definición:

En la línea 4 estamos declarando un objeto que tiene nombres de alumnos como clave, y la calificación de cada uno como valor.

En el HTML hacemos lo siguiente:

Es la misma sintaxis. Si ahora ejecutamos la app veremos que se renderiza una lista con calificaciones.

Si quisiéramos mostrar el nombre, es decir, la clave, tendríamos que recorrer con dos variables como veremos a continuación.

Ejemplo 3: repetir sobre objeto con clave y valor

Para obtener la clave y el valor del objeto al usar v-for simplemente hay que declarar ambas variables. Cambiando el v-for así:

Lo que daría la siguiente salida en donde se imprime tanto la clave como el valor:

Sintaxis de clave, valor en Vue.js

Puedes probar el ejemplo aquí.

Ejemplo 4 con Vue – Recorrer arreglo con índice y valor

Lo mismo que aplicamos al recorrer el diccionario podemos aplicarlo cuando recorremos un arreglo.

En este caso tomaríamos el índice numérico y el valor del arreglo.

Nota: vamos a ver cómo recorrer un arreglo de objetos, así vemos también cómo es posible acceder al objeto dentro del v-for.

Veamos el siguiente ejemplo. Comenzamos por el script:

Tenemos un arreglo normal, que tiene objetos en su interior con las propiedades nombre y artista.

Para recorrerlo hacemos esto:

Ahora tenemos el índice, y el objeto de la canción.

Repetir contenido de arreglo de objetos con Vue.js

Para dibujarla simplemente accedemos a cada propiedad a través del punto.

Puedes probar el ejemplo aquí.

Ejemplo 5 – Dibujar tabla con v-for

Lo anterior también puede ser dibujado dentro de una tabla, pues v-for se encarga de repetir los elementos sin importar el tipo.

Veamos el ejemplo. Lo único que cambia es la vista, pues los datos se quedan intactos.

La vista queda así:

Lo único que hacemos es repetir el tr (la fila de la tabla) en la línea 29.

El resultado es el siguiente:

Renderizar tabla con Vue usando directiva v-for

Puedes probarlo aquí.

Ejemplo 6: la clave o key

En algunas ocasiones, y sobre todo cuando queremos que los cambios se reflejen si modificamos el arreglo u objeto, es necesario proporcionar al elemento una clave.

Esta clave debe ser única, y debe ser un tipo de dato primitivo.

En el caso de las canciones la clave podría ser el índice, pues no se repite. La misma es especificada con :key

Lo único que cambia está en la línea 29, pues especificamos el atributo key.

A nivel de vista esto no cambia nada, pero cuando se desean vigilar y actualizar los cambios de un objeto esto es necesario. Además, siempre es una buena práctica especificar una clave.

Pruébalo aquí.

Ejemplo 7: un simple ciclo

Para terminar, veamos cómo repetir un elemento determinadas veces, algo como un simple ciclo for.

Si queremos repetir algo determinadas veces, especificamos un número en lugar de un arreglo u objeto.

Por ejemplo:

v-for="numero in 5"

Modifiquemos la vista para que ahora sea así:

Presta atención a la línea 28. Lo que hacemos es contar del 1 al 5, usando un índice.

El script queda así (solo se define la app y su elemento, pero no hay datos, porque el ciclo se hace en la vista):

Puedes probarlo aquí.