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

162
Vistas
No se pueden enviar accesorios en vuejs

Estoy tratando de enviar 2 accesorios a mi componente de barra de navegación pero no recibe los datos.

Esto es lo que obtengo en lugar de mis datos:

una

Código:

Front.vue (plantilla superior)

 <template> <front-nav :menus="menus" :settings="settings"></front-nav> <router-view :key="$route.fullPath"></router-view> <front-footer></front-footer> </template> <script> import frontNav from './frontNavBar.vue'; import frontFooter from './frontFooter.vue'; export default { name: 'front', data(){ return { settings: { name: '', favicon: '', logo: '', }, menus: [], } }, components: { frontNav, frontFooter }, mounted() { this.getData(); }, methods: { getData() { axios.get('/api/general') .then(response => { this.settings = response.data.settings[0]; this.menus = response.data.menus; }) .catch(function (error) { console.log('error', error); }); } }, } </script>

Componente Nabar (accesorios de recepción)

 <template> <div>data goes here...</div> </template> <script> export default { name: 'frontNav', props: ['settings', 'menus'], data() { // }, mounted() { console.log('settings: ', this.settings) console.log('menus: ', this.menus) }, methods: { // } } </script>

los resultados de console.log('settings: ', this.settings) y console.log('menus: ', this.menus) están en la imagen de arriba.

¿Alguna idea?

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

0

Está montando front-nav antes de getData() y devuelva la respuesta adecuada, por lo tanto, los accesorios están vacíos. Debe esperar a que getData() se complete antes de montar front-nav .

Podrías hacer algo como:

  1. Usar <Suspense>

  2. Use <front-nav v-if="menus" :menus="menus" :settings="settings"> o algo apropiado que sepa que tendrá un valor cuando getData() devuelva una respuesta y tenga un valor significativo.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Resuelto

childDataLoaded: false, a mi componente Front.vue y lo configuré como verdadero cuando se cargan los datos para que funcione ahora, así es como:

 <template> <template v-if="childDataLoaded"> // <-- here <front-nav :menus="menus" :settings="settings"></front-nav> </template> <router-view :key="$route.fullPath"></router-view> <front-footer></front-footer> </template> <script> import frontNav from './frontNavBar.vue'; import frontFooter from './frontFooter.vue'; export default { name: 'front', data(){ return { childDataLoaded: false, // <-- here settings: { name: '', favicon: '', logo: '', }, menus: [], } }, components: { frontNav, frontFooter }, mounted() { this.getData(); }, methods: { getData() { axios.get('/api/general') .then(response => { this.settings = response.data.settings[0]; this.menus = response.data.menus; this.childDataLoaded: true, // <-- here }) .catch(function (error) { console.log('error', error); }); } }, } </script>
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