【Vue】【求助】vue element 这样的路由规则,怎么设置左侧菜单高亮
问题描述:
左侧菜单,点击“客户”"可以高亮,“客户”页面有个新增按钮,点击新增的话,就进入到了新增页面,路由规则变了,请问如何还能让左侧的“客户”高亮???
路由规则如下:
{path: '/kehu',
name: '客户',
component: Layout,
menu:true,
children:[
{ path: '/kehu/list',menu:true, name:'客户', component: () => import('@/views/kehu/list/index') },
{ path: '/kehu/list/create', menu:false, name:'新增', component: () => import('@/views/kehu/list/create') },
{ path: '/kehu/list/edit',menu:false, name:'编辑', component: () => import('@/views/kehu/list/edit') }
]
},
左侧菜单如下:
<el-menucollapse-transition
:default-active="$route.path"
class="el-menu-vertical-demo"
background-color="#304156"
active-text-color="#409EFF"
text-color="#BFCBD9"
router
:collapse="isCollapse">
<template v-for="(item,index) in $router.options.routes" v-if="item.menu">
<el-submenu :index="item.name">
<template slot="title">
<i class="el-icon-location"></i>
<span slot="title">{{item.name}}</span>
</template>
<el-menu-item
@click="clickroute(child.path)"
v-for="(child,indexs) in item.children"
:index="child.path"
:key="child.path"
v-if="child.menu">{{child.name}}</el-menu-item>
</el-submenu>
回答
// 修改 el-menu 的default-active 属性为 :default-active="$route.path.split('/').slice(0,3).join('/')" <el-menu
collapse-transition
:default-active="$route.path.split('/').slice(0,3).join('/')"
class="el-menu-vertical-demo"
background-color="#304156"
active-text-color="#409EFF"
text-color="#BFCBD9"
router
:collapse="isCollapse">
左侧为路由菜单,右侧tab标签项自己模拟渲染的菜单列表,tab是根据你左侧点击以后已存储的路由信息渲染,那么tab点击后调用路由跳转 $router.push 跳转, 对应 :default-active="$route.path" 能响应到,反之要对应,则需要在你的tab渲染逻辑处对路由变化监听做出判断,确定当前激活哪一项tab,以上是个简单描述,实现方法多种,望对你有帮助
this.$route
获取路由信息,循环matched
,判断左侧菜单的name
是否在matched
里面,如果存在就高亮菜单
补充-------------
:default-active="activeName"
computed: { activeName () {
let activeName
for (let i = 0; i < this.$route.matched.length; i++) {
const route = this.$route.matched[i]
if (route.name) {
activeName = route.name
break
}
}
return activeName
}
}
我觉得把新增和编辑做成弹窗比较好,也省区了这么多麻烦
以上是 【Vue】【求助】vue element 这样的路由规则,怎么设置左侧菜单高亮 的全部内容, 来源链接: utcz.com/a/80590.html