0

I'm trying to make my project to have 2 kind of nagigation bar, I have read some documentation and searching for tutorial on youtube, i did not found anything related to my problem, i want to have 2 kind of nav-bar for each route without refreshing it on every page. I put my nav-bar on app file in the current project, but what i want to do is making another nested routed that displaying another nav-bar and have it own routes, can anyone help me with this problem? simple code example would be greatly appreciated.

1 Answer 1

1

You could use the $route.meta for controlling which navbar to display. This is an easy solution, but you always have to take care of the nav (or set a default, like in the snippet below):

const Foo = {
  template: `
    <div>This is Foo</div>
  `
}

const Bar = {
  template: `
    <div>This is Bar</div>
  `
}

const routes = [{
    path: "/",
    redirect: "/foo",
  },
  {
    path: "/foo",
    component: Foo,
    meta: {
      nav: "nav1",
    },
  },
  {
    path: "/bar",
    component: Bar,
    meta: {
      nav: "nav2",
    },
  },
]

const router = new VueRouter({
  routes,
})

new Vue({
  el: "#app",
  components: {
    Foo,
    Bar,
  },
  router,
  computed: {
    computedRoute() {
      return this.$route.meta.nav
    },
  },
})
.link {
  padding: 0 8px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

<div id="app">
  <div v-if="computedRoute === 'nav1'">
    <router-link to="/foo" class="link">
      FOO 1
    </router-link>
    <router-link to="/bar" class="link">
      BAR 1
    </router-link>
  </div>
  <div v-else>
    <router-link to="/foo" class="link">
      FOO 2
    </router-link>
    <router-link to="/bar" class="link">
      BAR 2
    </router-link>
  </div>
  <br>
  <hr>
  <router-view />
</div>

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.