目录
1、侧边栏组件
1.1 侧边栏组件
1.2、getters.js
1.3、permission 模块
1.4、app 模块
1.5、vuex中添加新模块
1.6、样式文件
1.7、变量scss文件
2、SidebarItem 组件
2.1 SidebarIntem 组件
2.2、验证工具类
2.3、菜单项组件
2.4 链接组件
在完成 <首页-获取路由信息> 和 <首页-svg图标> 这两章后,本章将之前的<主页布局-左侧导航菜单(静态)>改造为动态菜单
效果图:
1、侧边栏组件
原来静态菜单中,我们是写死的,现在需要改造成动态生成组件的形式
1.1 侧边栏组件修改 src / layout / components / Sidebar / index.vue
<template>
<div class="">
<el-scrollbar class="scrollbar-wrapper">
<el-menu
:default-active="activeMenu"
:collapse="isCollapse"
:background-color="variables.menuBg"
:text-color="variables.menuText"
:unique-opened="true"
:active-text-color="variables.menuActiveText"
:collapse-transition="false"
mode="vertical"
>
<sidebar-item
v-for="route in permission_routes"
:key="route.path"
:item="route"
:base-path="route.path"
></sidebar-item>
</el-menu>
</el-scrollbar>
</div>
</template>
<script type="text/ecmascript-6">
import { mapGetters } from 'vuex'
import SidebarItem from './SidebarItem'
import variables from '@/assets/styles/variables.scss'
export default {
data() {
return {}
},
components: { SidebarItem },
methods: {
handleOpen(key, keyPath) {
console.log(key, keyPath)
},
handleClose(key, keyPath) {
console.log(key, keyPath)
}
},
computed: {
...mapGetters(['permission_routes', 'sidebar']),
activeMenu() {
const route = this.$route
const { meta, path } = route
if (meta.activeMenu) {
return meta.activeMenu
}
return path
},
variables() {
return variables
},
isCollapse() {
return !this.sidebar.opened
}
}
}
</script>
<style lang="scss" scoped>
</style>
1.2、getters.js修改 src / store / getters.js 文件
const getters = {
roles: state => state.user.roles,
permission_routes: state => state.permission.routes,
sidebar: state => state.app.sidebar
}
export default getters
'1.3、permission 模块
新建 src / store / modules / permission.