前端实现一次menu侧边栏

发布时间 2023-05-05 14:14:22作者: 樱桃树下的约定

前言
使用动态数据之后 element  menu 组件 高亮显示错误, 默认展开失效   两级侧边栏

封装侧边栏功能简单

数据

菜单栏数据格式

let Array = [{
  title: "管理",
  routeName: "order",
  icon: "",
  path: "",
  expanded: false,   // 开始关闭状态
    routeArray:['orderList'], // 子路的routeName   我是作为了高亮展开的标识
  children: [{
    title: "列表",
    path: "",
    routeName: "orderList",
  }]
},]

 

html部分

<ul class="menu">
      <li v-for="(item, index) in navList" :key="index"
        style="height:40px">
<span @click.stop="toggleItem(item)" id="expanded""></i> {{ item.title }} <i :class="item.expanded ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"></i></span> <div> <ul class="menu_box">
   <li v-for="(i, j) in item.children" :key="j" style="transition: 'all .5s ease' ">
<span><router-link :to="i.routeName"><span
                    :style="{ color: i.routeName == $route.name ? '#006EFF' : '#595A6F' }"><span> {{ i.title }}</span></span>
           </router-link></span>
            </li>
          </ul>
        </div>
      </li>
    </ul>

 事件部分:

  toggleItem(item) {
      if (this.isCollapse) {
        this.shrinkMenu()
        return false
      }
      if (item.expanded) {
        this.navList.forEach(element => {
          element.expanded = false
        });
        return false
      }
      this.navList.forEach(element => {
        element.expanded = false
      });
      item.expanded = !item.expanded
    }

 以上就是部分代码等我二更