Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
Vue.js Cómo reflejar el campo de entrada con el modelo v y la propiedad calculada y una casilla de verificación

Estoy tratando de descubrir cómo reflejar correctamente dos campos de entrada y cambiarlos dinámicamente en función del valor de una casilla de verificación. Esto es lo mejor que puedo pensar en usar la propiedad calculada con funciones de obtención y configuración. El problema es cuando el usuario escribe (1) "ABC" en los detalles de envío, (2) desmarca (copy_chekcbox=false), (3) escribe "123" en los detalles de facturación y (4) vuelve a marcar (copy_chekcbox=true) ( 5) los detalles de facturación no vuelven a los detalles de envío, que es lo que necesito. Imagen con pasos

Además, ¿hay alguna forma más corta y óptima de reflejar dos campos y cambiar sus valores según el valor de la casilla de verificación?

Gracias de antemano.

 <!DOCTYPE html> <html> <head> <title>My first Vue app</title> <script src="https://unpkg.com/vue"></script> </head> <body> <div id="app"> <p>Shipping details</p> <input v-model="shipping" type="text" /> <p>Same as shipping: <input type="checkbox" v-model="copy_chekcbox" /></p> <p>Billing details</p> <input v-model="billing" type="text" :disabled="copy_chekcbox" /> </div> <script> var app = new Vue({ el: '#app', data: { shipping_data: '', billing_data: '', copy_chekcbox: true, }, computed: { shipping: { get: function() { return this.shipping_data }, set: function(newValue) { if (!this.copy_chekcbox) { this.shipping_data = newValue } else { this.billing_data = newValue this.shipping_data = newValue } }, }, billing: { get: function() { return this.billing_data }, set: function(newValue) { if (!this.copy_chekcbox) { this.billing_data = newValue } else { this.billing_data = this.shipping_data } }, }, } }) </script> </body> </html>

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En mi opinión, creo que la forma más fácil es usar dos entradas con v-if:

 <p>Shipping details</p> <input v-model="shipping" type="text"> <p>Same as shipping: <input type="checkbox" v-model="copy_chekcbox"></p> <p>Billing details</p> <template v-if="copy_chekcbox"> <input v-model="shipping" type="text"> <template> <template v-else> <input v-model="billing" type="text"> </template>

La principal ventaja de este método es que su código JavaScript sigue siendo simple.

about 4 years ago · Juan Pablo Isaza Denunciar

0

prueba esto:

 billing: { get: function() { return this.copy_checkbox ? this.shipping_data : this.billing_data },

debería volver a ejecutar la función calculada para sus datos de facturación cuando cambie copy_checkbox y, por lo tanto, actualice sus datos de facturación.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda