Vue.jsVuevue

element NavMenu导航菜单,跳转到子页面,导航不高亮

2020-10-19  本文已影响0人  zhudying

当我们使用elementui 中的 NavMenu 导航菜单时,可能会有这样一个问题,我们点击的那一项高亮显示,但是当我们从一级页面跳转到子页面时,菜单高亮会消失。这样是很不友好的,我们可以使用 NavMenu中的 default-active 和 router 属性来解决。

<el-menu
       class="sidebar-el-menu"
      :default-active="onRoutes"
      :collapse="collapse"
      text-color="#fff"
      active-text-color="#fff"
      background-color="#0e0d0a"
      unique-opened
      :router="true">
</el-menu>

设置 onRoutes 计算属性

export default {
  computed: {
    onRoutes() {
      const route = this.$route
      const { meta, path } = route
      // 可以在路由配置文件中设置自定义的路由路径到meta.activeMenu属性中,来控制菜单自定义高亮显示
      // meta中 有activeMenu 字段的子页面,都会显示高亮
      if (meta.activeMenu) {
        return meta.activeMenu
      }
      return path
    }
  }
}

路由配置

routes: [
  {
    path: '/',
    name: 'apiDocument',
    component: customerLayout,
    children: [
      {
        path: '/apiDocument',
        component: '...',
        meta: {
          title: '父页面'
       },
      {
        path: '/apiDocument',
        component: '...',
        meta: {
          title: '子页面',
          activeMenu:'apiDocument'
       }, 
      {
        path: '/apiDocument',
        component: '...',
        meta: {
          title: '父页面',
          activeMenu:'apiDocument'
       }
    }]
  }
]

在每次点击菜单时浏览器地址栏中的地址就会改变,一级菜单是 通过 index 来控制选中状态从而显示高亮,现在我们使用activeMenu来自定义控制二级对应高亮,使得activeMenu配置和一级菜单的index属性中的配置一直一致,这样就使主菜单保持高亮了。

上一篇 下一篇

猜你喜欢

热点阅读