Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

482
Visualizações
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 backend. Obviamente, podría verificar esto y anular la propiedad antes de cualquier procesamiento adicional, 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!

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

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>

over 4 years ago · Santiago Trujillo Relatório

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda