# 5、vk-data-menu-nav 左侧菜单
# 介绍
主要用在了 /windows/leftWindow.vue
文件内,功能是渲染左侧树形菜单列表
# 完整示例
<template>
<scroll-view class="sidebar" :class="classCom" scroll-y="true" v-loading="!vk.getVuex('$app.inited')" :style="styleCom">
<vk-data-menu-nav
v-if="vk.getVuex('$app.inited')"
:data="vk.getVuex('$app.navMenu')"
:unique-opened="true"
:collapse="vk.getVuex('$app.leftCollapse')"
:collapse-transition="false"
:theme="theme"
default-menu-icon="el-icon-folder-opened"
default-sub-menu-icon="el-icon-tickets"
@select="select"
></vk-data-menu-nav>
</scroll-view>
</template>
<script>
import config from "@/app.config.js";
export default {
data() {
return {
theme: config.theme
}
},
methods: {
select(e){
},
},
// 监听属性
watch: {
$route: {
immediate: true,
handler(newRoute, oldRoute) {
let that = this;
let { vk } = that;
let { path , query } = newRoute;
let url = path + vk.pubfn.queryParams(query);
let route = { path, query, url };
vk.setVuex('$app.route', route);
}
}
},
// 计算属性
computed: {
styleCom(){
let theme = this.theme;
if (theme && theme.use) {
return theme[theme.use].leftMenu;
} else {
return {};
}
},
classCom(){
let obj = {
pc: vk.getVuex('$app.isPC'),
mobile: !vk.getVuex('$app.isPC'),
collapse: vk.getVuex('$app.leftCollapse'),
};
return obj;
}
}
}
</script>
<style lang="scss">
.sidebar {
position: fixed;
top: var(--window-top);
width: 240px;
height: calc(100vh - (var(--window-top)) + 50px);
box-sizing: border-box;
box-shadow: var(--boxShadow, 2px 0 0px rgba(0,21,4,0.2));
border-top: var(--borderTop);
background-color: $left-window-bg-color;
padding-bottom: 10px;
top: 50px;
z-index: 998;
}
.sidebar.collapse{
width: 64px;
}
.title {
margin-left: 5px;
}
.center{
text-align: center;
margin-top: 100px;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# API
# 属性
参数 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
data | 菜单数据数组 | Array | [] | - |
mode | 菜单模式 | String | "vertical" | "horizontal" |
collapse | 是否折叠菜单 | Boolean | false | true, false |
theme | 主题配置 | String、 Object | - | - |
background-color | 菜单背景颜色 | String | "#ffffff" | - |
sub-background-color | 子菜单背景颜色 | String | "#ffffff" | - |
text-color | 菜单文字颜色 | String | "#515a6e" | - |
active-text-color | 激活菜单文字颜色 | String | "#409EFF" | - |
active-background-color | 激活菜单背景颜色 | String | "#ecf5ff" | - |
unique-opened | 是否只保持一个子菜单展开 | Boolean | false | true, false |
default-openeds | 默认展开的子菜单数组 | Array | [] | - |
menu-trigger | 子菜单触发方式 | String | "hover" | "click","hover" |
router | 是否使用 vue-router 的模式 | Boolean | false | true, false |
collapse-transition | 是否开启折叠动画 | Boolean | true | true, false |
default-menu-icon | 默认菜单图标 | String | "el-icon-folder-opened" | - |
default-sub-menu-icon | 默认子菜单图标 | String | "el-icon-tickets" | - |
# 事件
事件名 | 说明 | 回调参数 |
---|---|---|
open | 监听 - 菜单展开时 | index |
close | 监听 - 菜单关闭时 | index |
select | 监听 - 菜单项被点击时 | item |
← 4、drawer 抽屉 扩展教程 →