Condicionales en Vue.js: Uso de Directivas para Templates Dinámicos
Clase 13 de 23 • Curso de Vue.js: Introducción y Fundamentos
Contenido del curso
Clase 13 de 23 • Curso de Vue.js: Introducción y Fundamentos
Contenido del curso
José Alberto Ramírez Quiroz
Diana Martinez
Abel da Cunha
José Galdámez
Gaston Nicolas Morales Olivera
Kalet Adonay Chavez Alas
Cristobal Nyram
Santiago Jimenez Moncada
José Alberto Ramírez Quiroz
Nicolas Velasquez Lopez
Emma Zuliova Velarde Fernández
Markin Piero Pulache Guarniz
Carlos Rodríguez
Nicolas Velasquez Lopez
Christian Ruiz
Julio Cesar Labrador Rosales
Beto Toro
Francisco Joel Marin Calderón
Cleibert castillo
Samuel Mujica
Con lo visto en esta clase hize un formulario con validacion así...
Os dejo el codigo...
const vm = Vue.createApp({ data() { return { message: 'Experimentos con VUE3', subtitle: 'Accede a tu cuenta 👤', attr:'src', door:'data:image/jpeg;base64,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', text:'Puerta cerrada', open:false, close:"data:image/jpeg;base64,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", openDoor:'data:image/jpeg;base64,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', user:"", password:"", msgBienvenida:"Ingresa tu nombre de usuario", styles:{ display:"flex", flexDirection:"column", alignItems:"center", background:"salmon", height:"auto" } } }, methods:{ puerta(){ if(this.user !== "" && this.password !== ""){ this.open = !this.open } } }, watch:{ open(){ if(this.open == true && this.user !== ""){ this.door= this.openDoor this.styles.background = "palegreen" } else{ this.door = this.close this.styles.background = "salmon" this.user = "" this.password = "" } } }, template: ` <div v-bind:style="styles"> <h2>{{message}}</h2> <h2 v-if="!open">{{subtitle}}</h3> <div v-bind:class="['party']"> <img v-bind:[attr]="door"> <p v-if="!open">{{msgBienvenida}}</p> <form action="#"> <input placeholder="Email" v-if="!open" required v-model="user"> <input placeholder="Password" required v-if="!open" type="password" v-model="password" > <p v-if="open">Bienvenido @{{this.user}}</p> <button v-on:click="puerta"> <p v-if="open">Cerrar Sesion</p> <p v-else>Iniciar Sesion</p> </button> </form> </div> </div> ` }).mount('#app') const d = document d.querySelector("body").style.setProperty("font-family","Open Sans") const appmain = d.getElementById("app") appmain.style.setProperty("background","white") appmain.style.setProperty("height","100vh") appmain.style.setProperty("padding","10px") appmain.style.setProperty("text-align","center") appmain.style.setProperty("color","black") appmain.style.setProperty("fornt-size","30px") const cadenero = d.querySelector(".party") cadenero.style.setProperty("display","flex") cadenero.style.setProperty("flex-direction","column") cadenero.style.setProperty("width","150px") cadenero.style.setProperty("height","200px")
Jaja, ¡que increíble!
Ese patova en la puerta... otra que terminator!
El típico *ng-if de Angular. Definitivamente se nota la mano de Evan You.
Directivas de Angular y cositas sutiles de React.js, totalmente de acuerdo.
hasta ahora,doy gracias a los consejos de aprender a usar javascript a profundidad antes de usar cualquier framework,todo se entiende con mucha claridad,aparte de la forma de explicar de la profesora Diana!!!
sí, con cuerdo.
Bueno yo trate de hacer algo con los valores computados!
Resultado:
codigo:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Estilos Reactivos</title> <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300&display=swap" rel="stylesheet" /> </head> <body> <script src="https://unpkg.com/vue@next"></script> <div id="app"></div> <script> const vm = Vue.createApp({ data() { return { text: "Puerta cerrada", open: false, fullname: "", username: "", cellphone: "", fecha_nacimiento: "", }; }, watch: { open(value) { if (value) { this.text = "Computando resultados:"; } else { this.text = "Accede a tu cuenta, Completa el registro:"; this.username = ""; this.fullname = ""; this.cellphone = ""; this.fecha_nacimiento = ""; } }, }, computed: { label() { return this.open ? "Salir" : "Acceder"; }, styles() { return this.open ? ["Salir"] : ["Acceder"]; }, letras() { return this.username.length; }, sumacellphone() { this.numero = parseInt(this.cellphone); if (this.numero >= 10) { this.suma = 0; this.c = ""; for (this.c in this.cellphone) { this.suma += parseInt(this.cellphone[this.c]); } return this.suma; } else return null; }, }, methods: {}, template: ` <div class="container" :class="styles"> <h2>Prueba de registro con vue!</h2> <h3>{{text}}</h3> <div v-if="open"> <p class="respuesta">Hola {{ fullname }}, Esta es una prueba de vue!</p> <p class="respuesta">Tu nombre de usuario es {{ username }}, contiene {{ letras }} letras</p> <p class="respuesta">Tu fecha de nacimiento es {{ fecha_nacimiento }}, Me quedo duro calcular la edad! :(</p> <p class="respuesta">La suma de tu numero de celular {{ cellphone }} es igual: {{ sumacellphone }} </p> </div> <div v-else> <form class="formulario"> <label>Nombre completo: </label> <input type="text" placeholder="Nombre completo"v-model="fullname" required> <label>Usuario: </label> <input type="text" placeholder="@username" v-model="username" required> <label>Celular: </label> <input type="text" placeholder="Celular number"v-model="cellphone" required> <label>Fecha de nacimiento: </label> <input type="date" placeholder="01/01/2001" v-model="fecha_nacimiento"> </form> </div> <button @click="open = !open" > <div v-if="!open">acceder</div> <div v-else>Salir</div> </button> </div> `, }).mount("#app"); console.log(vm); </script> <style> html, body { height: 100vh; margin: 0; font-family: "Open Sans", sans-serif; } #app, .container { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; height: 100%; } button { margin-top: 24px; border: none; background-color: white; padding: 8px 24px; border-radius: 12px; } .Salir { background-color: #eca1a6; } .Acceder { background-color: #b5e7a0; } .formulario { display: flex; flex-direction: column; } .formulario label { text-align: center; } .formulario input { padding: 5px; border: none; -webkit-appearance: none; -ms-appearance: none; -moz-appearance: none; appearance: none; background: #ffffff; padding: 12px; border-radius: 3px; width: 250px; font-size: 14px; text-align: center; margin: 3px; } .formulario :focus::placeholder { color: transparent; } </style> </body> </html>
Os dejo el apartado de la documentacion que aborda condicionales... :)
Muchas gracias José!
Aquí mi aporte:
Fuentes de información
:3
bien hecho emma
Una forma de aprovechar los condicionales puede ser cuando en tiempo real escribimos en un input con validación de entrada, por ejemplo, en campo un campo de email, si el email es erróneo nos genera un html con estilos debajo del input de que el email no es correcto.
Fuentes de información
Todos mis apuntes y los códigos de cada clase en mi github
Otra directiva en Vue que se usa como condicional es "v-show". Su uso es practicamente igual que el v-if, pero hay una diferencia importante: v-if es para decidir si el elemento al que se lo estamos aplicando va a existir siquiera en el DOM. v-show es para solamente decidir si vamos a mostrar el elemento en la vista, pero sin que deje de existir en el DOM. Ademas, v-if funciona como un el if de JS, pudiendo ser acompanado de su respectivo v-else y/o v-else-if
Documentacion sobre condicionales en español:
Evan You es un crack. Vue parece un hijo entre Angular y Svelte trayendo cosas interesantes de otros framworks como SwiftUI.
Vengo de React y amigos, me está enamorando Vue.
Evan es un crack y a Vue le falta solo fama; le ven como un patito feo por no tener algo potente en mobile; peroooo, su ecosistema es muy rico y versatil. No soy Vue Lover, React me da de comer pero no es lo mismo jeje
Le agregue una imagen y que el botòn se encuentre deshabilitado si el campo esta vaciò
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> </div> <div id="app"></div> <script> const vm = Vue.createApp({ data() { return { text: "Accede a tu cuenta", open: false, username: "", }; }, watch: { open(value) { if (value) { this.text = "Cierra sesión"; } else { this.text = "Accede a tu cuenta"; this.username = ""; } } }, computed: { label() { return this.open ? "Salir" : "Acceder"; }, styles() { return this.open ? ['open'] : ['closed']; } }, template: ` <div class="container" :class="styles"> <div class"container" :class="styles"> <img src="./image.jpeg" alt="Persona sentada frente a un portátil sonriendo mientras usa la pantalla, mesa de trabajo con taza de café y planta al fondo, texto en la imagen: Accede a tu cuenta, ambiente luminoso y acogedor" /> </div> <h2>{{ text }}</h2> <div v-if="open"> <p>Hola, {{ username }}</p> </div> <div v-else> <div>Username</div> <input type="text" v-model="username" /> </div> <button @click="open = !open" :disabled="!username && !open"> <div v-if="!open">Acceder</div> <div v-else>Salir</div> </button> </div> ` }).mount("#app"); </script> <style> html, body { height: 100vh; margin: 0; font-family: Arial, Helvetica, sans-serif; } #app, .container { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; height: 100%; } button { margin-top: 24px; border: none; background-color: white; padding: 8px 24px; border-radius: 12px; } .closed { background-color: #eca1a6; } .open { background-color: #b5e7a0; } .container img { max-width: 300px; border-radius: 12px; margin-bottom: 24px; } </style> </body> </html>
No le puse tantos estilos pero lo que hice es no dejar "iniciar sesion" sin que no haya un username usando directivas y propiedades computadas, al inicio pense en usar watchers pero una rapida googleada me hizo darme cuenta que no era lo mas sencillo o directo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> <div id="app"> </div> <script> const vm = Vue.createApp( { data() { return { text: "Iniciar sesion", open: false, styles: { backgroundColor: '#eca1a6' }, username: "", form: false, }; }, methods: { input(e) { this.username = e.target.value; } }, computed: { btnClass() { return this.open ? ['closed'] : ['open'] }, isDisabled() { return this.username === ""; } }, template: ` <div class="container" :style="styles"> <h3> {{text}} </h3> <div v-if="open"> <p> Hola, {{username}} </p> </div> <div v-else> <label>Username</label> <input type="text" v-on:input="input" v-bind:value="username" /> </div> <div > <button :disabled="isDisabled" :class="btnClass" @click="open = !open"> <div v-if="!open">Acceder</div> <div v-else>Salir</div> </button> </div> </div> `, watch: { open(value) { this.text = value ? "Cerrar sesion" : "Iniciar sesion" this.styles.backgroundColor = value ? "#b5e7a0" : "#eca1a6" if (!value) { this.username = "" } }, } } ).mount('#app'); </script> <style> html, body { height: 100vh; margin: 0; font-family: Arial, Helvetica, sans-serif; } #app, .container { display: flex; justify-content: center; align-items: center; flex-direction: column; width: 100%; height: 100%; } button { margin-top: 24px; border: none; padding: 8px 24px; border-radius: 12px; } .closed { background-color: #eca1a6; } .open { background-color: #b5e7a0; } </style> </body> </html>