Vue_3电商后台管理系统:渲染左侧菜单,获取用户列表数据

本文介绍使用Vue.js结合Element UI实现项目的左侧菜单渲染及路由配置的方法,包括双层for循环渲染多级菜单、侧边栏折叠功能、路由重定向等,并通过sessionStorage保存菜单激活状态,最后展示了用户列表组件的基本布局。

21、主页:通过双层for循环渲染左侧菜单

外层for循环用来渲染一级菜单,内层渲染for循环用来渲染二级菜单。

在一级菜单里添加v-for指令,再提供唯一的key属性。key值有id就用id。

<!-- 一级菜单 -->
<el-submenu
  v-for="item in menulist"
  :key="item.id"
>

这时候出现了五个“导航栏一”,文本都是写死的,把每个item项对应的authname属性当作名称,给span标签动态绑定名称。

<span>{
   
   {
   
    item.authName }}</span>

这样,五个菜单就都渲染出来了。

但是展开一个菜单,其他四个也都展开了。此时,需要给这个一级菜单指定唯一的index值,按照正常逻辑,每一个菜单都有独属于自己的index值,id值就是唯一的。
但是index值只接收字符串,不接收数值,可以在后面加上一个空字符串。数值和字符串拼接,得到的是字符串。

<el-submenu
  :index="item.id + ''"
  v-for="item in menulist"
  :key="item.id"
>

这样,所有的一级菜单已经渲染出来了。

根据数据结构分析,二级菜单循环所有一级菜单的children属性。

<el-menu-item :index="subItem.id + '' " v-for="subItem in item.children" :key="subItem.id">

<span>{
   
   {
   
   subItem.authName}}</span>

在这里插入图片描述

22、主页:修饰选项字体、添加图标

因为每个一级菜单都是通过for循环自动生成的,如何在自动生成期间修改字体图标?如何把这些字体图标按照顺序添加给一级菜单?
可以先定义一个字体图标对象:

data() {
   
   
iconsObj:{
   
   
          '125':'iconfont icon-user',
          '103':'iconfont icon-tijikongjian',
          '101':'iconfont icon-shangpin',
          '102':'iconfont icon-danju',
          '145':'iconfont icon-baobiao',
         }
      }

每循环一次会生成一个一级菜单,给一级菜单的图标动态绑定:

<!-- 图标 -->
<i :class="iconsObj[item.id]"></i>

23、主页:每次只打开一个菜单项并解决边框问题

element-UI中的导航栏menu有这样一个属性:

unique-opened 是否只保持一个子菜单的展开 类型是布尔值,默认是false

把这个属性添加到menu上:

<el-menu
:unique-opened = "true"
>
// 也可以这样写:
<el-menu
unique-opened
>

在这里插入图片描述

.el-aside {
   
   
  .el-menu {
   
   
      border-right: none;
  }
}

24、主页:实现侧边栏的折叠与展开

1、先加样式,把折叠按钮显示出来。

.toggle-button {
   
   
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值