vue+elementui实现导航栏三级菜单动态显示

<template>
	<el-container>
		<el-header>Header</el-header>
		<el-container>
			<el-aside width="200px">
				<el-col :span="24">
					<el-menu :router="true"
					 class="el-menu-vertical-demo"
					 @open="handleOpen"
					 @close="handleClose"
					 :default-active="this.$router.path"
					 >

						<!--一级菜单-->
						<template v-for="item in menus">
							<el-submenu v-if="item.subMenu && item.subMenu.length" :index="item.url" :key="item.url">
								<template slot="title">
									<span>{{item.menuname}}</span>
								</template>

								<!--二级菜单-->
								<template v-for="itemChild in item.subMenu">
									<el-submenu v-if="itemChild.subMenu && itemChild.subMenu.length" :index="itemChild.url" :key="itemChild.url">
										<template slot="title">

											<span>{{itemChild.menuname}}</span>
										</template>

										<!--三级菜单-->
										<el-menu-item v-for="itemChild_child in itemChild.subMenu" :index="itemChild_child.url" :key="itemChild_child.url">
											<template slot="title">

												<span>{{itemChild_child.menuname}}</span>
											</template>
										</el-menu-item>

									</el-submenu>
									

								</template>

							</el-submenu>
						
						</template>

					</el-menu>



				</el-col>





			</el-aside>
			<el-main>
				<!-- 切换不同的组件,显示对应的内容 -->
				<router-view></router-view>
			</el-main>
		</el-container>
	</el-container>
</template>
<script>
	//导出
	export default {

		data() {
			return {
				menus: [],
			}
		},
		methods: {
			handleOpen(key, keyPath) {
				console.log(key, keyPath);
			},
			handleClose(key, keyPath) {
				console.log(key, keyPath);
			},

			queryMenus() {
				this.$axios.get("myMenu/initMenu/")
					.then(respData => {
						this.menus = respData.data;
					})
					.catch(errorData => {
						console.log(errorData);
					})
			},

		},
		mounted() {
			this.queryMenus();
		}
	}
</script>

<style>
	.el-header,
	.el-footer {
		background-color: #B3C0D1;
		color: #333;
		text-align: center;
		line-height: 60px;
	}

	.el-aside {
		background-color: #D3DCE6;
		color: #333;
		text-align: center;
		line-height: 200px;
	}

	.el-main {
		background-color: #E9EEF3;
		color: #333;
		text-align: center;
		line-height: 160px;
	}

	body>.el-container {
		margin-bottom: 40px;
	}

	.el-container:nth-child(5) .el-aside,
	.el-container:nth-child(6) .el-aside {
		line-height: 260px;
	}

	.el-container:nth-child(7) .el-aside {
		line-height: 320px;
	}

	html,
	body,
	#mydiv {
		margin: 0px;
		padding: 0px;
		height: 100%;
	}

	.el-container {
		height: 100%;
	}
</style>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值