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

208
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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