Manipulación Reactiva de Atributos HTML con Vue.js
Clase 7 de 23 • Curso de Vue.js: Introducción y Fundamentos
Contenido del curso
Clase 7 de 23 • Curso de Vue.js: Introducción y Fundamentos
Contenido del curso
Jose Barboza
Emerson Cedeño
Kyb3r Cipher
José Reinaldo Duque Serna
Joel Angel Chavez Loyola
Juan Guillermo Perez Cardozo
Josue Cerron Tuesta
Miguel Angel Reyes Moreno
Mariano Gastón Paduani
Silvana Zalazar
Dufainder Bedoya
Mariano Gastón Paduani
Rodrigo Ramos Xochiteotzin
Joseph Marchena
Mariano Gastón Paduani
Josue Cerron Tuesta
Alejandro Dotor
Diana Martinez
Miguel Angel Reyes Moreno
Christian Barrionuevo
Angelo Acevedo
JuanC M
LUIS MIGUEL OLARTE BELLO
José Hernán Varela
Rubén Orozco
Carlos Rodríguez
Luciano Cavallo
Carlos Sebastián Cano Gutiérrez
Sergio Antonio Ordoñez González
David Bautista
interesante como se puede cambiar hasta el comportamiento de los atributos. el shortcut para "v-bind: " es " : " por tanto podria ser asi:
<img :src="img" :alt="alt">
nice!, gracias por compartir!
Buen aporte thx
También me funciona haciendolo con la sintaxis de objeto de atributos:
<img v-bind="{'src':img, 'alt':img}">
Podemos realizar de esta manera, y otra con un res operator los dejo a criterio
que forma tan limpia, creo yo. muchas gracias por el aporte
Es muy limpio. Gracias por compartir!
Url para imágenes random: https://picsum.photos/200/300
Muchas gracias!
gracias, me re sirvio!!
v-bind: es una directiva que se pone antes del atributo al cual su valor quiero cambiar dinamicamente. una conjugacion para "v-bind: " es " : "
Se puede utilizar:
v-bind:class=" variable_vue = 'clase' "
conjugado seria
:class=" variable_vue = 'clase' "
se puede utilizar con objetos v-bind:class="{‘clase’ : vue_variable}"
Tambien se puede usa v-bind:class="" y class="" al mismo tiempo en un componente de html
Responder
Gracias!
Creo que una potencialidad del v-bind la alcancé a ver en el trabajo cuando toda la información que se consumía para generar imágenes dinámicas venía de la base de datos y la data que recibíamos era un objeto de configuración. Accediendo a las propiedades podíamos darle mucho dinamismo a los templates! y esto aplica para todo!
Otra forma de hacer bind. Es a través de objetos en Vue:
const vm = createApp({ data() { return { imagen: { attr: 'src', textoalternativo: 'alt', texto: 'Myimagen', img: "https://i.picsum.photos/id/0/5616/3744.jpg?hmac=3GAAioiQziMGEtLbfrdbcoenXoWAW-zlyEAMkfEdBzQ", } //message: 'Hello Vue' } }, template : `<img :[imagen.attr]="imagen.img" :alt="imagen.texto" style="width:500px;"/>` //template: `<div v-text="message"></div>` }).mount('#app')
Gracias por el aporte
Esta genial bro! Gracias por compartir.
Hola, uso Vue hace más o menos un año, siempre he usado Vue de esta forma:
<div id="app"> <img v-bind:src="img" /> </div> <script> const vm = Vue.createApp({ data() { return { img: "https://i.picsum.photos..." }; } }).mount("#app"); console.log(vm); </script>
Mi pregunta es, ¿por qué mueves el contenido del ID app hacia el template?, si dentro del id app ya funciona y es mucho más cómodo realizarlo de esta forma. Saludos.
Claro, lo que te funcione es válido, comencé a moverme hacia los templates, porque de ese modo vamos entrando más a cómo se hacen los componentes.
Algo bonito de Vue es que es muy flexible para usarlo cómo tu quieras.
No sabía que podíamos usar atributos dinámicos :o
lo de los atributos dinamicos me 🤯
Si requieren usar una foto pueden usar esta:
https://fastly.picsum.photos/id/1026/200/300.jpg?hmac=Thvj4aJ_VnAGT6DKAcy1yTs100zlstJTyImDWphGDFI
Es la manipulación de atributos nativos de un componente nativo de html.
Por ejemplo para modificar la fuente de la imagen
<img src="image source" class="img-fluid rounded-top" alt="">Con la directiva V-bind puedo modificar los valores de los atributos src y alt
<img v-bind:src="variable_imagen" class="img-fluid rounded-top" :alt="variable_alt">Tambièn lo puedo hacer solo anteponiendo los : sobre el argumento.
https://media.es.wired.com/photos/646fc5f9a566376ee967bcfb/16:9/w_1280,c_limit/MetalGearSolidDelta.jpg ```https://media.es.wired.com/photos/646fc5f9a566376ee967bcfb/16:9/w\_1280,c\_limit/MetalGearSolidDelta.jpg
Saludos amigos no me cargaba la imagen, la url de la imagen ahora es: https://fastly.picsum.photos/id/17/2500/1667.jpg?hmac=HD-JrnNUZjFiP2UZQvWcKrgLoC_pc_ouUSWv8kHsJJY
Que bueno ese plus de vue 3, de permitir pasarle a v-bind variables, esto permite hacer cambios mas dinámicos en los atributos de una etiqueta html. una nueva mecánica que nos puede ayudar a codificar alguna necesidad de forma mas fácil.
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="Description" content="Extended Description"> <meta name="robots" content="index,follow"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Document Title</title> <link rel="stylesheet" href=""> <style> img { width: 25%; height: 25%; margin: 12px; } </style> </head> <body> <script src="https://unpkg.com/vue@3"></script> <div id="app"> </div> <script> const vm = Vue.createApp({ data() { return { img: 'https://i.picsum.photos/id/1/5616/3744.jpg?hmac=kKHwwU8s46oNettHKwJ24qOlIAsWN9d2TtsXDoCWWsQ', alt: 'Laptop', attr: 'src', }; }, // v-bind: es para que el atributo sea reactivo // v-bind:attr="var-value" // v-bind:[var-attr]="var-value" template: `<img v-bind:src="img" v-bind:alt="alt"> <img v-bind:[attr]="img" v-bind:alt="alt">`, }).mount('#app'); </script> </body> </html>
Que buena la explicación de esta clase de v-bind! 👍️
De verdad este curso es una joyita. Es increíble lo simple que es la explicación y se agredece qué explique conceptos super básicos.
cuale s la diferencia entre v-bind y lo que estábamos haciendo con la variable text
Hola Sergio. La diferencia principal radica en dónde colocas la información:
{{ text }}): Se usa para inyectar contenido dentro de las etiquetas HTML (como texto entre un <div> y otro).v-bind: Se usa para manipular los atributos de las etiquetas HTML (como el src de una imagen, el href de un enlace o el disabled de un botón).Imagina que el HTML es una caja: la interpolación cambia lo que hay dentro de la caja, mientras que v-bind cambia las propiedades de la caja misma (su color, su tamaño o su origen).
Como v-bind es muy común, puedes usar el atajo : en lugar de escribir toda la palabra.
Para profundizar, te recomiendo revisar:
El uso de v-bind:style es correcto y te permite aplicar estilos dinámicamente a tus elementos en Vue.js. Al utilizar esta directiva, puedes ajustar propiedades CSS como el tamaño de una imagen. Por ejemplo:
<img v-bind:src="img" v-bind:alt="alt" v-bind:style="{ width: '100px', height: 'auto' }">
Esto reducirá el tamaño de la imagen a 100 píxeles de ancho, manteniendo la proporción. La clave está en proporcionar un objeto con las propiedades CSS que deseas modificar. Recuerda que esto es parte de la reactividad de Vue, lo que significa que puedes cambiar esos valores en tu modelo de datos y la vista se actualizará automáticamente.