el-menu的default-active属性

项目

element-plus

官方描述

当前激活菜单的 index

问题描述

后台项目,左侧菜单如下

  • 用户管理
    • 用户列表
  • 商品管理
    • 商品列表
    • 商品分类
  • 订单管理
    • 订单列表
  • 数据统计
    • 统计信息

菜单外层是<el-menu>

一级菜单用的是<el-submenu>

二级菜单项用的是<el-menu-item>

<el-menu router>router属性开启了路由,当点击了二级菜单比如用户列表<el-menu-item>,<el-menu-item>,的index属性规定了激活的路由,如果index='/users'则会跳转到/users的路由。

但是这里有个坑:

比如右边即Users.vue有个面包屑导航区代码如下,结合下面的路由配置,可知点击首页会跳转到路由/wellcome但是用户列表仍然处于激活状态【问题】<el-menu>active-text-color="#ffd04b"属性规定了菜单项激活时的颜色,由于用户列表是激活的,颜色是激活状态的颜色。那么如何改变激活状态呢?

1<!-- 面包屑导航区 --> 2 <el-breadcrumb separator-class="el-icon-arrow-right"> 3 <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> 4 <el-breadcrumb-item>用户管理</el-breadcrumb-item> 5 <el-breadcrumb-item>用户列表</el-breadcrumb-item> 6 </el-breadcrumb>

路由配置是这样的

1[ 2 { 3 path: '/', 4 name: 'Home', 5 component: () => import('../views/Home.vue'), 6 redirect: '/wellcome', 7 children: [ 8 { 9 path: '/wellcome', 10 component: () => import('../components/WellCome.vue') 11 }, 12 { 13 path: '/users', 14 component: () => import('../components/user/Users.vue') 15 }, 16 { 17 path: '/goods', 18 component: () => import('../components/goods/Goods.vue') 19 }, 20 { 21 path: '/goodscate', 22 component: () => import('../components/goods/GoodsCate.vue') 23 }, 24 { 25 path: '/orders', 26 component: () => import('../components/order/Orders.vue') 27 }, 28 { 29 path: '/statdata', 30 component: () => import('../components/statdata/StatData.vue') 31 } 32 ] 33 }, 34 { 35 path: '/:catchAll(.*)', 36 name: '404', 37 component: () => import('../views/404.vue') 38 }, 39 { 40 path: '/login', 41 name: 'LoginRegister', 42 component: () => import('../views/Login.vue') 43 } 44]

解决方案

由如下代码可知,<el-menu-item :index="child.path"path表示点击时激活的路由,而我们现在做的是要同步以下路由,我们要改变的是<el-menu>:default-active="activePath"属性

1 <el-menu 2 :uniqueOpened="true" 3 class="el-menu-vertical-demo" 4 text-color="#fff" 5 background-color="#272727" 6 active-text-color="#ffd04b" 7 @open="handleOpen" 8 @close="handleClose" 9 :collapse="collapseMode" 10 :collapse-transition="false" 11 router 12 :default-active="activePath" 13 > 14 <!-- 一级菜单 --> 15 <el-submenu :index="item.id" v-for="item in menuList" :key="item.id"> 16 <template #title> 17 <i :class="item.icon"></i> 18 <span>{{ item.name }}</span> 19 </template> 20 <!-- 二级菜单 --> 21 <el-menu-item :index="child.path" v-for="child in item.children" :key="child.id"> 22 <template #title> 23 <i class="el-icon-menu"></i> 24 <span>{{ child.name }}</span> 25 </template> 26 </el-menu-item> 27 </el-submenu> 28 </el-menu>

setup

在setup中做路由监听,引入onBeforeRouteUpdate

1import { onBeforeRouteUpdate } from 'vue-router'

监听,当路由改变时把路由传给这个属性,大功告成

1// 菜单激活的路由 2const activePath = ref<string>('') 3// 路由监听 4onBeforeRouteUpdate((to) => { 5 activePath.value = to.path 6})

左侧菜单栏数据

1// 左侧菜单数据 2const menuList = [ 3 { id: '1', name: '用户管理', icon: 'el-icon-user', children: [{ id: '1-1', name: '用户列表', path: '/users' }] }, 4 { id: '2', name: '商品管理', icon: 'el-icon-goods', children: [{ id: '2-1', name: '商品列表', path: '/goods' }, { id: '2-2', name: '商品分类', path: '/goodscate' }] }, 5 { id: '3', name: '订单管理', icon: 'el-icon-s-order', children: [{ id: '3-1', name: '订单列表', path: '/orders' }] }, 6 { id: '4', name: '数据统计', icon: 'el-icon-pie-chart', children: [{ id: '4-1', name: '统计信息', path: '/statdata' }] } 7]
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0

35岁,真的是程序员的一道坎吗?

“程序员35岁是道坎”,“程序员35岁被裁”……这些话咱们可能都听腻了,但每当触及还是会感到丝丝焦虑,毕竟每个人都会到35岁。而国内互联网环境确实对35岁以上的程序员不太友好:薪资要得高,却不如年轻人加班猛;虽说经验丰富,但大部分公司并不需要太资深的程序员。但35岁危机并不是不可避免的,比如你可以不断精进技术,将来做技术管理或者