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

136
Vistas
v-for y v-if causan problemas con una variable indefinida

En mi aplicación Vue, tengo una línea de código muy pequeña basada en un bucle v-for y funciona hasta que le lanzo un V-IF.

LAS SIGUIENTES OBRAS:

 <div v-for="date in dates" :key="date"> <th v-for="store in stores">@{{store.stock}}</th> </div>

Sin embargo, cuando trato de hacer que solo muestre ese valor si la fecha en el objeto coincide con el objeto de fechas, obtengo que la store no está definida

 <div v-for="date in dates" :key="date"> <div v-for="store in stores"> <th v-if="store.date === date">@{{store.stock}}</th> </div> </div>

Aquí están mis objetos:

 stores: [ { store: "123", date: "2021-09-01", stock: "145" } ] dates: [ { date: "2021-09-01" } ]

¿Por qué tengo este problema cuando trato de hacer coincidir las fechas en el v-if?

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

0

Cometiste un pequeño error. ¡la date debe ser date.date !

 <div v-for="date in dates" :key="date"> <div v-for="store in stores"> <th v-if="store.date === date.date">@{{store.stock}}</th> </div> </div>
about 4 years ago · Juan Pablo Isaza Denunciar

0

en lugar de usar v-if con v-for, puede usar computated para obtener la tienda que necesita mostrar y luego usar solo una v-for

 <template> <div> <div v-for="store in activeStore" :key="store.stock" > {{ store.date }} </div> </div> </template> <script> export default ({ data() { return { count: 1110, stores: [{ store: 'test', date: '2021-09-01', stock: '145' }, { store: 'test', date: '2021-09-02', stock: '146' }, { store: 'test', date: '2021-09-03', stock: '147' }, { store: 'test', date: '2021-09-04', stock: '148' }], dates: ['2021-09-01', '2021-09-02', '2021-09-03', '2021-09-00'] } }, computed: { activeStore: function() { return this.stores.filter((store) => { if (this.dates.includes(store.date)) { return store } }) } } }) </script>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay una solución simple usando la propiedad calculada

 <div v-for="date in dates" :key="date"> <div v-for="(store, indexer) in getFilteredStores(date)" :key="indexer"> <th>@{{store.stock}}</th> </div> </div>

y en su computado, defina el controlador a continuación para obtener la tienda para fechas particulares

 computed: { getFilteredStores() { return targetDate => { // targetDate is the argument passed to the handler return this.stores.filter(store => store.date === targetDate); } } }
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