07 动态菜单栏

1 左侧菜单栏静态数据改为动态数据

1 后台数据

<script>
export default {
  data() {
    return {
      menuList: [
        {
          id: 1,
          title: "权限管理",
          icon: "el-icon-s-operation",
          path: "",
          component: "",
          children: [
            {
              id: 2,
              title: "用户管理",
              icon: "el-icon-user",
              path: "/sys/user",
              children: [],
            },
            {
              id: 3,
              title: "角色管理",
              icon: "el-icon-s-custom",
              path: "/sys/role",
              children: [],
            },
            {
              id: 4,
              title: "菜单管理",
              icon: "el-icon-menu",
              path: "/sys/menu",
              children: [],
            },
          ],
        },
        {
          id: 5,
          name: "SysTools",
          title: "系统工具",
          icon: "el-icon-s-tools",
          path: "",
          children: [
            {
              id: 6,
              title: "数字字典",
              icon: "el-icon-s-order",
              path: "/sys/dict",
              children: [],
            },
          ],
        },
      ],
    };
  },
};
</script>

2 遍历展示菜单

原静态菜单代码

        <el-menu
          default-active="2"
          class="el-menu-vertical-demo"
        >
          <!-- 一级菜单 -->
          <el-submenu index="1">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>导航一</span>
            </template>
            <!-- 二级菜单 -->
            <el-menu-item index="1-1">选项1</el-menu-item>
          </el-submenu>
        </el-menu>

遍历一级菜单

 看下效果

一级菜单已出现,下来遍历二级菜单

看下效果

 接下来对菜单属性进行设置,参考官网

 设置路由跳转

左侧菜单栏完整代码如下:

 <!-- 左侧菜单栏 -->
      <el-aside width="200px">
        <!-- 使用 vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转 -->
        <el-menu
          default-active="2"
          class="el-menu-vertical-demo"
          :router="true"
        >
          <!-- 遍历一级菜单 -->
          <el-submenu :index="firstMenu.id+''" v-for="firstMenu in menuList" :key="firstMenu.id">
            <template slot="title">
              <i :class="firstMenu.icon"></i>
              <span>{{firstMenu.title}}</span>
            </template>
            <!-- 遍历二级菜单,index作为path进行路由跳转 -->
            <el-menu-item :index="secondMenu.path" v-for="secondMenu in firstMenu.children" :key="secondMenu.id">
                <i :class="secondMenu.icon"></i>
                <span>{{secondMenu.title}}</span>
              </el-menu-item>
          </el-submenu>
        </el-menu>
      </el-aside>

在router.js中配置用户管理的路由,页面路由全部挂载在index路由下,这样容易替换主体区的内容

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: [
    { path: '/', redirect: '/login' },
    { path: '/login', name: 'Login', component: () => import('../views/Login.vue') },
    {
      path: '/index', 
      name: 'Index', 
      component: () => import('../views/Index.vue'), 
      children: [
        { path: '/sys/user', name: 'SysUser', component: () => import('../views/sys/user/User.vue') }
      ]
    },
  ]
})

主题区使用router-view标签显示路由的页面内容

  

 点击用户管理,效果如下

接下来,配置角色管理页面,菜单管理页面及路由

 至此,点击菜单切换页面内容初步实现

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值