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

120
Vistas
Manejo de propiedades nulas dentro de accesorios utilizados para v-model

Estoy creando un componente de edición simple en el que el objeto que se va a editar se asigna como accesorio del componente.

Por ejemplo:

 export default { name: "EditPersonModal", props: { person: {}, } ... }

Un objeto de person contiene un objeto de address , que a su vez contiene city , state , zip , etc.

Dentro del componente, no es posible modelar los campos de dirección con v-model="person.address.city" ya que person.address es nulo.

Una solución a esto es verificar person.address en la creación y configurarlo en {} si no está definido; sin embargo, esto da como resultado que la propiedad vacía llegue al back-end. Obviamente, podría verificar esto y anular la propiedad antes de cualquier otro procesamiento, pero ¿hay algún limpiador para hacer esto que no implique verificar cada uno de los campos de un objeto secundario?

El mismo problema también se enfrenta en un componente Agregar

¡Gracias!

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

0

Como comentó @TrietDoan, debe evitar mutar accesorios directamente en el componente secundario. En lugar de v-model , solo use :value y luego use el encadenamiento opcional:

 Vue.component('Child', { template: ` <textarea :value="person.address?.city ?? ''" @input="$emit('input', $event.target.value)"></textarea> `, props: { person: {}, } }) new Vue({ el: '#demo', data() { return { item: {name: 'pers', address: {city: 'city'}}, } }, methods: { updateCity(city) { this.item.address.city = city } } }) Vue.config.productionTip = false Vue.config.devtools = false
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="demo"> <p>{{ item.address.city }}</p> <Child :person="item" @input="updateCity" /> </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías usar el encadenamiento opcional:

v-model="person.address?.city ?? ''"

person.address?.city significa que si person.address es null o undefined , devuelve null .

El ?? operador devuelve el resultado de la derecha si el operador de la izquierda es null

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