Vue 后台管理项目8-侧边菜单的实现
2019-03-08 本文已影响390人
夜半暖人心
侧边菜单的实现
1.饿了吗NavMenu 导航菜单:
image传送门:
http://element.eleme.io/#/zh-CN/component/menu
//html代码
<el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff"active-text-color="#ffd04b">
<el-submenu index="1">
<!-- 一级菜单 -->
<template slot="title" class="title">
<i class="el-icon-location"></i>
<span>导航一</span>
</template>
<!-- 二级菜单 -->
<el-menu-item index="1-1">
<i class="el-icon-menu"></i>
选项1
</el-menu-item>
<el-menu-item index="1-2">
<i class="el-icon-menu"></i>
选项2
</el-menu-item> -->
</el-submenu>
</el-menu>
//css代码
.el-aside {
background-color: #545c64;
color: #333;
text-align: center;
line-height: 200px;
.el-menu-vertical-demo {
border: none;
}
//先将scoped去掉,不然权重不够修改不了样式
//设置折叠菜单的样式
.el-submenu__title {
text-align: left;
}
}
2.根据接口动态生成权限菜单
Ⅰ.关于权限:
后台会告诉你帐号对应的菜单:调接口→拿数据→渲染页面
调用需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌
axios文档传送门:
https://github.com/axios/axios
//created获取初始化数据渲染页面
created(){
this.$axios.get('menus',{
headers:{
Authorization:window.sessionStorage.getItem('token')
}
}).then(res=>{
// console.log(res);
this.menuList = res.data.data;
})
}
Ⅲ.获取到数据渲染到页面
//JS代码,将获取的数据存入menuList
data(){
return{
menuList:[]
}
}
//html代码,渲染到页面
//index需要是累加值,如果没设置点击某个一级菜单,所有二级菜单都展开
<el-submenu v-for="(item, index) in menuList" :key="item.id" :index="item.order">
<!-- 一级菜单 -->
<template slot="title" class="title">
<i class="el-icon-location"></i>
<span>{{item.authName}}</span>
</template>
<!-- 二级菜单 -->
<el-menu-item v-for="(it, i) in item.children" :key="it.id" index="1-1">
<i class="el-icon-menu"></i>
{{it.authName}}
</el-menu-item>
</el-submenu>
image
image
image
image
点击跳转的路由地址也是后台设置好返回给我们,这个需要沟通确认好
本文同步发表在我的个人博客:https://www.lubaojun.com/