这是Element组件给的效果图
<el-row class="tac">
<el-col :span="12">
<h5>默认颜色</h5>
<el-menu
default-active="2"
class="el-menu-vertical-demo"
@open="handleOpen"
@close="handleClose">
<el-submenu index="1">
<template slot="title">
<i class="el-icon-location"></i>
<span>导航一</span>
</template>
<el-menu-item-group>
<template slot="title">分组一</template>
<el-menu-item index="1-1">选项1</el-menu-item>
<el-menu-item index="1-2">选项2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分组2">
<el-menu-item index="1-3">选项3</el-menu-item>
</el-menu-item-group>
<el-submenu index="1-4">
<template slot="title">选项4</template>
<el-menu-item index="1-4-1">选项1</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item index="2">
<i class="el-icon-menu"></i>
<span slot="title">导航二</span>
</el-menu-item>
<el-menu-item index="3" disabled>
<i class="el-icon-document"></i>
<span slot="title">导航三</span>
</el-menu-item>
<el-menu-item index="4">
<i class="el-icon-setting"></i>
<span slot="title">导航四</span>
</el-menu-item>
</el-menu>
</el-col>
<script>
export default {
methods: {
handleOpen(key, keyPath) {
console.log(key, keyPath);
},
handleClose(key, keyPath) {
console.log(key, keyPath);
}
}
}
</script>
有些朋友想刷新页面,但是刷新之后这些导航栏可能就会默认收上去,想让它在刷新页面之后保持选中并且展示的情况。
想要解决这个问题的话,我们需要通过当前激活菜单的 index来控制当前页面的选择情况。
default-active="$route.path === 'index'"
如果想要其他菜单栏和这个效果一样的话,我们可以通过三元运算符来判断当前路由是否是根路由,如果是,就会选择根路由,否则,就会返回去掉第一个字符后的路由路径。
三元运算符的语法是:
condition ? expr1 : expr2
解决的方法是:
// 如果当前路由路径是根路由,则将default-active设置为$route.path,否则将default-active设置为去掉第一个字符后的路由路径
:default-active="$route.path === '/' ? $route.path : $route.path.substring(1)"