En la segunda lección hablaremos sobre el enlace de atributos, sobre la conexión de datos almacenados en una instancia de Vue a atributos de elementos HTML. → Primera lección
El proposito de la leccion
Aquí veremos cómo mostrar una imagen y establecer el texto del atributo utilizando el enlace de atributo
alt
. Tomaremos los datos relevantes de la instancia de Vue.
Código inicial
Comencemos con
index.html
el <body>
siguiente código HTML, ubicado en el archivo , en la etiqueta :
<div id="app">
<div class="product">
<div class="product-image">
<img src="" />
</div>
<div class="product-info">
<h1>{{ product }}</h1>
</div>
</div>
</div>
Presta atención a la etiqueta
<div>
con la clase product-image
. Contiene el elemento <img>
al que queremos unir dinámicamente los datos necesarios para mostrar la imagen.
Un elemento
<div>
con una clase se product-info
utiliza para mostrar el nombre de un producto.
Aquí está el JavaScript contenido en el archivo
main.js
:
var app = new Vue({
el: '#app',
data: {
product: "Socks",
image: "./assets/vmSocks-green.jpg"
}
})
Tenga en cuenta que el objeto
data
ahora tiene una nueva propiedad que image
contiene la ruta a la imagen.
→ El CSS utilizado en este tutorial se puede encontrar aquí .
Para conectar el estilo
index.html
, agregue lo <head>
siguiente a la etiqueta :
<link rel="stylesheet" type="text/css" href="style.css"
Aquí procedemos de la suposición de que el archivo de estilo tiene un nombre
style.css
y está almacenado en la misma carpeta que index.html
.
Aquí está la imagen que mostraremos en la página.
Una tarea
Necesitamos que se muestre una imagen en la página. Al hacerlo, queremos manipular dinámicamente esta imagen. Es decir, necesitamos la capacidad de cambiar la ruta a la imagen almacenada en la instancia de Vue e inmediatamente ver los resultados de estos cambios en la página. Dado que es el atributo del
src
elemento el <img>
responsable de la imagen que mostrará el elemento, debemos vincular algunos datos a este atributo. Esto nos permitirá cambiar dinámicamente la imagen en función de los datos almacenados en la instancia de Vue.
Un término importante: enlace de datos
Cuando hablamos de enlace de datos en Vue, el punto es que el lugar en la plantilla en el que se usan o muestran los datos está directamente "conectado" o "vinculado" a la fuente de datos, es decir, al objeto correspondiente almacenado en la instancia Vue.
En otras palabras, la entidad de origen de datos está asociada con la entidad en la que se utilizan estos datos, con el sumidero de datos. En nuestro caso, la fuente de datos es una instancia de Vue y el receptor es un atributo del
src
elemento <img>
.
La solucion del problema
Para vincular un valor de propiedad
image
de un objeto de datos a una propiedad de src
etiqueta <img>
, usaremos la directiva Vue v-bind
. Reescribamos el código de etiqueta <img>
del archivo index.html
:
<img v-bind:src="image" />
Cuando Vue, mientras procesa una página, ve tal construcción, el marco la reemplaza con el siguiente código HTML:
<img src="./assets/vmSocks-green.jpg" />
Si todo se hace correctamente, se mostrará una imagen en la página.
La imagen de los calcetines verdes se muestra en la página.
Y si cambia el valor de la
image
propiedaddelobjetodata
, el valor del atributo cambiará en consecuenciasrc
, lo que conducirá a la visualización de una nueva imagen en la página.
Digamos que queremos reemplazar los calcetines verdes con los azules. Para hacer esto, dado que la ruta al archivo con la nueva imagen se ve
./assets/vmSocks-blue.jpg
(el archivo de imagen se puede encontrar aquí ), es suficiente para traer el código de descripción de propiedadimage
en el objetodata
a este formulario:
image: "./assets/vmSocks-blue.jpg"
Esto hará que la imagen de los calcetines azules aparezca en la página.
La imagen de los calcetines azules se muestra en la página.
Casos de uso adicionales para v-bind
La directiva
v-bind
se puede usar no solo con un atributo src
. También puede ayudarnos a ajustar dinámicamente el atributo de imagen alt
.
Agreguemos una
data
nueva propiedad al objeto con opciones altText
:
altText: "A pair of socks"
Atemos los datos correspondientes al atributo
alt
, llevando el código del elemento <img>
a este formulario:
<img v-bind:src="image" v-bind:alt="altText" />
Aquí, como en el caso del atributo
src
, se utiliza la construcción, que consta de v-bind
dos puntos y el nombre del atributo ( alt
).
Ahora, si las propiedades de la instancia de Vue cambian
image
o altText
, los <img>
datos actualizados aparecerán en los atributos del elemento correspondiente . Esto no romperá el enlace entre los atributos del elemento y los datos almacenados en la instancia de Vue.
Esta técnica se usa constantemente cuando se desarrollan aplicaciones Vue. Debido a esto, hay una versión abreviada del registro de construcción
v-bind:
. Parece que :
. Si utiliza esta técnica al escribir código de etiqueta <img>
, obtendrá lo siguiente:
<img :src="image" />
Es simple y conveniente. Esta técnica mejora la limpieza del código.
Taller
Agregue un enlace (elemento
<a>
) con texto a la página More products like this
. En el objeto, data
cree una propiedad que link
contenga el enlace https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=socks
. Vincula, usando una directiva v-bind
, una propiedad link
a un atributo de un href
elemento <a>
.
→ Aquí hay una plantilla que puede usar para resolver este problema.
→ Aquí está la solución al problema.
Salir
Esto es lo que aprendimos hoy:
- Los datos almacenados en la instancia de Vue pueden estar vinculados a atributos HTML.
- La directiva se utiliza para vincular datos a atributos
v-bind
. La abreviatura de esta directiva es dos puntos (:
). - Un nombre de atributo que sigue a dos puntos indica el atributo al que están vinculados los datos.
- Como el valor del atributo especificado entre comillas, se utiliza el nombre de la clave, mediante el cual puede encontrar los datos conectados al atributo.
Si está tomando este curso, le pedimos que nos cuente sobre el entorno que utiliza para hacer su tarea.
→ Parte 1: Creación de instancias de Vue
→ Parte 2: Enlace de atributos en Vue