Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
Alternar el componente de la barra lateral con el botón del componente de la barra de navegación

Estoy tratando de aprender Laravel con Vuejs (v3). Tengo 3 componentes: App.vue , Navbar.vue y Sidebar.vue

Lo que estoy tratando de hacer es hacer clic en sidebar-btn :

  1. Cambiar el valor de la variable isSidebarActive a !isSidebarActive ---- HECHO
  2. Cambiar la clase de fontawesome (depende de isSidebarActive ). ---- HECHO
  3. Mostrar Sidebar.vue (depende de isSidebarActive )

Intenté usar accesorios, pero el error dice que no puedo cambiar el valor, así que intenté usar emits , pero parece que todavía no puedo hacerlo bien.

aplicación.js

 require('./bootstrap'); import { createApp } from 'vue' import App from './App.vue' import router from './routes' // Partials import Navbar from './components/Navbar.vue' import Sidebar from './components/Sidebar.vue' createApp(App) .component('navbar', Navbar) .component('sidebar', Sidebar) .use(router) .mount('#app')

aplicación.vue

 <template> <navbar></navbar> <sidebar v-bind:class="{ active: isSidebarActive }"></sidebar> <router-view></router-view> </template> <script> export default { name: "App", data() { return { isSidebarActive: false, }; }, } </script>

Navbar.vue

 <template> <nav class="navbar navbar-expand-md navbar-dark bg-dark shadow-sm sticky-top"> <div class="container"> <div class="navbar-brand" > <span class="h4"> Hello World! </span> <!-- Button to toggle Sidebar --> <span class="btn btn-outline-light btn-sm ms-2" id="sidebar-btn" style="border: 1px white" @click="toggleSidebar()"> <i v-bind:class="[isSidebarActive ? 'fas fa-arrow-left' : 'fas fa-bars']" title="Sidebar Menu"></i> </span> </div> </div> </nav> </template> <script> export default { name: "Navbar", data() { return { isSidebarActive: false, }; }, emits: ['isSidebarActive'], methods: { toggleSidebar:function () { this.isSidebarActive = !this.isSidebarActive this.$emit("isSidebarActive", this.isSidebarActive) }, }, } </script>
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Por favor, eche un vistazo al siguiente fragmento:

 const app = Vue.createApp({ data() { return { isSidebarActive: false, }; }, methods: { handleSidebar() { // 👈 handle received event this.isSidebarActive = !this.isSidebarActive } } }) app.component('Sidebar', { template: `<div>sidebar</div>` }) app.component('Navbar', { template: ` <div>Hello World!<button @click="toggleSidebar()">show/hide sidebar</button></div> `, methods: { toggleSidebar() { this.$emit("toggle") // 👈 emit event }, }, }) app.mount('#demo')
 <script src="https://unpkg.com/vue@3.2.29/dist/vue.global.prod.js"></script> <div id="demo"> <!-- 👇 listen to event from child, call method --> <navbar @toggle="handleSidebar"></navbar> <!-- 👇 conditionaly show/hide component --> <sidebar v-if="isSidebarActive"></sidebar> </div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!