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

210
Vistas
Vue js pasa una función de child chile a otro componente secundario en un evento de clic

Estoy tratando de pasar una función cuando se hace clic en un botón, se hace clic en el botón en un elemento secundario, luego se pasa a través de un elemento principal a otro componente secundario, y no quiero usar la tienda para eso. ¿Cómo puedo hacer eso?

components/footer/footer.vue: aquí es donde se hace clic en el botón

 <template> <div class="footer-bottom-header-menu-bar mob" @click="showMenu"> <img src="~/assets/svg/menubar.svg" alt="+" /> </div> </template> <script> export default { methods: { showMenu() { this.$emit("show-menu"); } } } </script>

layouts/default.vue: este es el componente principal donde recibe la función de clic y debe pasarla al app-header

 <template> <div> <app-header /> <Nuxt /> <app-footer @show-menu="showMenu()"/> </div> </template> <script> import header from "~/components/header/header"; import footer from "~/components/footer/footer"; export default { components: { 'app-header': header, 'app-footer': footer }, methods: { showMenu() { console.log("clicked"); } } } </script>

components/header/header.vue -- Quiero que la función de clic realice una acción dentro de este componente

 <script> export default { data() { return { showMenuBar: false } }, } </script>
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Por qué te preocupa pasar una función?

Cuando emit el evento show-menu , simplemente alterne un dato en su componente principal como este:

 <template> <div> <app-header :showMenuBar="showMenuBar" /> <Nuxt /> <app-footer @show-menu="showMenu"/> </div> </template> <script> import header from "~/components/header/header"; import footer from "~/components/footer/footer"; export default { components: { 'app-header': header, 'app-footer': footer }, data() { return { showMenuBar: false; }; }, methods: { showMenu() { // I would make this more dynamic than always // hardcoding it to true, but you get the idea this.showMenuBar = true; } } } </script>

Luego, en su AppHeader simplemente tómelo como accesorio:

 <script> export default { props: { showMenuBar: { type: Boolean, default: false, }, } </script>
over 4 years ago · Santiago Trujillo Denunciar

0

Puede declarar cualquier atributo en su componente principal:

 data() { return { toBeWatched: 0 }; }
  • Luego páselo como accesorios del padre al hijo del encabezado:
    <app-header :Trigger="toBeWatched" />
  • Cuando escuche el evento @show-menu (procedente del pie de página secundario), realice cualquier cambio en su atributo:
    <app-footer @show-menu="toBeWatched++" />
  • Finalmente, puede observar este cambio en su encabezado secundario y activar su función.
 <script> export default { data() { return { showMenuBar: false }; }, props: ['Trigger'], watch: { Trigger() { this.showMenuBar = !this.showMenuBar; // or do whatever you want console.log('showMenuBar : ' + this.showMenuBar); } } }; </script>
over 4 years ago · Santiago Trujillo 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