前端基础学习-实现菜单默认高亮

实现菜单默认高亮(切换切面后刷新,页面与菜单对应)

在创建完项目会出现刷新当前页面,但是菜单会回到初始状态,这里主要记录一下,当我们刷新页面后,菜单高亮与对应页面相匹配

在element-ui官网可以看到,default-active绑定的是当前激活菜单的 index
在这里插入图片描述
我们在菜单中,index所绑定的变量是path,即路由路径,所以我们实现当前页面对应菜单默认高亮,可以想办法截取到path,将其赋值给default-active绑定的变量

实现方法
(1)将el-menu中的index与path绑定

<el-menu
          :default-active="active"
          ref="menunRef"
          @select="handleSelect"
          style="border:none"
          >
          <el-submenu v-for="itemTitle in menusList" :index="itemTitle.path" :key="itemTitle.path">
            <template slot="title">
              <span>{{ itemTitle.title }}</span>
            </template>
            <el-menu-item v-for="item in itemTitle.children" :index="item.path" :key="item.path">
              <template slot="title">{{ item.title }}</template>
            </el-menu-item>
          </el-submenu>
        </el-menu>

以下是menuList

export default [
  {
    title: '基础学习',
    path: '/baseLearn',
    name: 'baseLearn',
    children: [
      {
        path: 'formLearn',
        name: 'formLearn',
        title: '表单学习'
      },
      {
        path: 'tableLearn',
        name: 'tableLearn',
        title: 'table学习'
      }
    ]
  }
]

(2)截取路由赋值给active

  computed: {
    menusList () {
      return menuList
    },
    active () {
      console.log(this.$route.path.lastIndexOf('/'), '获取从最后到/获取到的位置下标')
      let indexArr = this.$route.path.lastIndexOf('/') + 1
      console.log(this.$route.path.substr(indexArr), '截取到的路由')
      return this.$route.path.substr(indexArr)
    }
  },

可以看到我们打印出来的内容
在这里插入图片描述

后记

在这里也可以用监听

  watch: {
    // 监听路由 控制侧边栏激活状态
    '$route': {
      handler (to, from) {
        let toPath = to.path
        let indexArr = toPath.lastIndexOf('/') + 1
        this.active = toPath.substr(indexArr)
      },
      immediate: true
    }
  },

效果同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值