→ Vue.js principiantes lección 1: instancia Vue
→ Vue.js para principiantes, lección 2: atributos de enlace
→ Vue.js principiantes lección 3: renderizado condicional
→ Vue.js principiantes lección 4: listas de renderización
→ Vue .js para principiantes lección 5: procesamiento de eventos
→ Vue.js principiantes lección 6: clases y estilos vinculantes
→ Vue.js principiantes lección 7: propiedades calculadas
→ Vue.js principiantes lección 8: componentes
El propósito de la lección
Necesitamos mostrar información adicional al respecto en la tarjeta del producto. Esta información debe presentarse en forma de una lista que contenga lo siguiente:
- 80% algodón
- 20% poliéster
- Genero neutral
Código inicial
Comencemos con el
index.html
siguiente código HTML (archivo ):
<div class="product">
<div class="product-image">
<img :src="image" />
</div>
<div class="product-info">
<h1>{{ product }}</h1>
<p v-if="inStock">In stock</p>
<p v-else>Out of Stock</p>
</div>
</div>
Así es como se verá el objeto
data
utilizado al crear una instancia de Vue main.js
:
data: {
product: "Socks",
image: "./assets/vmSocks-green.jpg",
inStock: true,
details: ['80% cotton', '20% polyester', 'Gender-neutral']
}
Aquí ha aparecido una nueva propiedad: una matriz
details
.
Tarea
Es necesario mostrar el contenido de la matriz en la página
details
. Esto requiere encontrar respuestas a preguntas sobre cómo iterar sobre una matriz y cómo visualizar sus datos.
details: ['80% cotton', '20% polyester', 'Gender-neutral']
La solucion del problema
Otra directiva de Vue nos ayudará aquí -
v-for
. Le permite iterar sobre matrices y mostrar los datos que contienen.
Agregue al
index.html
siguiente código:
<ul>
<li v-for="detail in details">{{ detail }}</li>
</ul>
Gracias a esto, aparecerá en la página una lista de información adicional sobre el producto.
Lista en la página
La sintaxis usada entre comillas con una directiva
v-for
les resultará familiar a quienes hayan usado bucles de JavaScriptfor of
ofor in
. Hablemos de cómo funciona la directivav-for
.
Aquí usamos el sustantivo singular (
detail
) como un alias para los valores de cadena recuperados de la matriz. Luego escribimosin
y especificamos el nombre de la colección sobre la queiteramos(details
). Las llaves dobles indican qué tipo de datos queremos mostrar ({{ detail }}
).
Dado que la construcción
v-for
está dentro de un elemento<li>
, Vue inferirá un nuevo elemento<li>
para cada elemento de la matrizdetails
. Si la directiva sev-for
usó dentro de un elemento<div>
, luego, para cada elemento de la matriz, se generará un elemento <div>
que muestre el valor de ese elemento en la matriz.
Piense en una directiva
v-for
como una tubería con un manipulador. Toma los elementos de la colección, uno a la vez, y ensambla una lista.
La directiva v-for es como una tubería.
Veamos otro ejemplo
v-for
más complejo de uso . Aquí sacaremos <div>
datos almacenados en una matriz de objetos en un elemento .
Recorrer una variedad de objetos
La tarjeta de producto, que estamos desarrollando, necesita la capacidad de mostrar información sobre diferentes versiones del mismo producto. Esta información está contenida en una matriz de objetos
variants
, que se almacena en un objeto de datos data
. ¿Cómo iterar sobre esta matriz de objetos para generar datos?
Aquí está la matriz en cuestión:
variants: [
{
variantId: 2234,
variantColor: 'green'
},
{
variantId: 2235,
variantColor: 'blue'
}
]
Los objetos contenidos en esta matriz contienen el nombre del color y el identificador de la variante del producto.
Visualicemos estos datos en la página:
<div v-for="variant in variants">
<p>{{ variant.variantColor }}</p>
</div>
Lista de variantes de producto
Aquí solo necesitamos mostrar el nombre del color correspondiente a las diferentes variantes de producto. Por lo tanto, cuando nos referimos a los elementos de la matriz, usamos la notación de puntos. Si escribiéramos entre llaves
{{ variant }}
, todo el objeto se mostraría en la página.
Tenga en cuenta que se recomienda utilizar un atributo personalizado al representar dichos elementos
key
. Esto le permite a Vue realizar un seguimiento de la identidad de los elementos. Agreguemos un atributo de este tipo a nuestro código, utilizando como valor una propiedad única de losvariantId
objetos que contienen información sobre las opciones del producto:
<div v-for="variant in variants" :key="variant.variantId">
<p>{{ variant.variantColor }}</p>
</div>
Taller
Agregue una matriz que
sizes
contenga información sobre los tamaños de los calcetines al objeto de datos y, utilizando la directiva v-for
, muestre los datos de esta matriz en la página como una lista.
La matriz
sizes
podría verse así:
sizes: ['S', 'M', 'L', 'XL', 'XXL', 'XXXL']
Aquí hay una plantilla que puede usar para resolver este problema.
→ Aquí está la solución al problema
Salir
Hoy aprendimos lo siguiente:
- La directiva le
v-for
permite iterar sobre matrices para mostrar los datos que contienen. - La construcción
v-for
usa un alias para acceder a los elementos de la matriz. El nombre de la matriz en sí también se indica aquí. Por ejemplo, podría tener este aspecto:v-for=«item in items»
. - Al iterar sobre una matriz de objetos, puede utilizar la notación de puntos para acceder a las propiedades del objeto.
- Cuando se usa,
v-for
se recomienda asignar una clave única a cada elemento mostrado.
¿Está buscando en la documentación de Vue para este curso?
→ Vue.js principiantes lección 1: instancia Vue
→ Vue.js para principiantes, lección 2: atributos de enlace
→ Vue.js principiantes lección 3: renderizado condicional
→ Vue.js principiantes lección 4: listas de renderización
→ Vue .js para principiantes lección 5: procesamiento de eventos
→ Vue.js principiantes lección 6: clases y estilos vinculantes
→ Vue.js principiantes lección 7: propiedades calculadas
→ Vue.js principiantes lección 8: componentes