关于element-ui navMenu不选中问题

2,708 阅读1分钟

导航菜单刷新一直不显示选中高亮,点击时候会高亮,进入页面却不会高亮,设置 :default-active 根本不起作用,现在解决掉BUG决定写此文加强记忆:

vue-router中关于 $route || $router的区别:

  1. this.$router:表示全局,是router构造方法的实例。
  2.  this.$route:表示的是当前页面的路由信息.

所以 :default-active="$router.path" 的写法是不可能拿到路径的!!!!

千万要注意,是 :default-active="$route.path" ,这里不能写成router。

//错误示范
<el-menu :default-active="activeIndex" router class="el-menu-demo" mode="horizontal" active-text-color="#409EFF" @select="handleSelect">
    <el-menu-item index="/">首页</el-menu-item>
    <el-menu-item index="/func">功能</el-menu-item>
    <el-menu-item index="/custom">定制</el-menu-item>
    <el-menu-item index="/navMenu">帮助</el-menu-item>
</el-menu>



//正确操作
<el-menu :default-active="$route.path" router class="el-menu-demo" mode="horizontal" active-text-color="#409EFF" @select="handleSelect">
    <el-menu-item index="/">首页</el-menu-item>
    <el-menu-item index="/func">功能</el-menu-item>
    <el-menu-item index="/custom">定制</el-menu-item>
    <el-menu-item index="/navMenu">帮助</el-menu-item>
</el-menu>

结尾彩蛋:多次点击el-menu-item会报错

解决方案 :

//在router.js文件加入,就可以完美的解决

const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}