Vue递归菜单
一、效果图:

二、代码(Vue Cli 快速原型开发)
App.vue
<template>
<div id="app">
<template v-for="item in menus">
<!--没有子菜单的直接渲染title -->
<Menu :key="item.title" v-if="(item.children.length==0)">
<li class="title">{{item.title}}</li>
</Menu>
<!--这里还在v-for循环中,在向ReMenu子组件中传递数据是可以绑定item(分别表示menus的三个对象元素) --> <!-- 有子菜单的部分-->
<ReMenu v-else :item="item"></ReMenu>
</template>
</div> </template> <script>
import Menu from './Menu.vue'
import ReMenu from './ReMenu.vue'
export default {
name: 'app',
components: {
Menu,
ReMenu
},
data() {
return {
msg: "递归菜单",
menus: [{
"path": "/func1",
"title": "功能1",
"children": [{
"title": "功能1-1",
"children": [{
"title": "功能1-1-1",
"children": [{
"title": "功能1-1-1-1",
"children": []
},
{
"title": "功能1-1-1-2",
"children": []
}, {
"title": "功能1-1-1-3",
"children": []
},
]
},
{
"title": "功能1-1-2",
"children": []
}, {
"title": "功能1-1-3",
"children": []
},
]
}, {
"title": "功能1-2",
"children": []
}, {
"title": "功能1-3",
"children": []
}, ]
},
{
"title": "功能2",
"children": [{
"title": "功能2-1",
"children": []
}, {
"title": "功能2-2",
"children": []
}, {
"title": "功能2-3",
"children": []
}, ]
},
{
"title": "功能3",
"children": [{
"title": "功能3-1",
"children": []
}, {
"title": "功能3-2",
"children": []
}, {
"title": "功能3-3",
"children": [{
"title": "功能3-3-1",
"children": []
}, {
"title": "功能3-3-2",
"children": []
}, {
"title": "功能3-3-3",
"children": []
}]
}, ]
},
{
"title": "功能4",
"children": []
}
]
}
},
}
</script>
Menu.App
<template>
<ul>
<slot></slot>
</ul>
</template> <script>
export default {
name: "Menu",
props: ["msg","menus"]
}
</script>
MenuItem.app
<template>
<ul>
<li @click="change" class="title">
<slot name="title">默认值</slot>
</li> <li v-show="flag" style="list-style:none">
<slot name="content">默认值</slot>
</li>
</ul>
</template> <script>
export default {
name: "MenuItem",
data() {
return {
flag:false
}
},
methods: {
change(){
this.flag=!this.flag
}
},
}
</script> <style >
.title{
cursor:pointer;
}
</style>
Remenu.Vue
<template>
<MenuItem>
<template v-slot:title>
<li :key="item.title">{{item.title}}</li>
</template> <template v-slot:content>
<ul v-for="child in item.children" v-if="(child.children.length==0)">{{child.title}}</ul>
<ReMenu v-else :item="child"></ReMenu>
</template>
</MenuItem> </template>
<script>
import MenuItem from './MenuItem.vue'
export default {
// mounted() {
// console.log(this.item)
// },
name: "ReMenu",
components: {
MenuItem,
},
props: ["item"]
}
</script>
Vue递归菜单的更多相关文章
- vue路由菜单权限设置就button权限设置
路由权限的设计思路: 首先,我们的需要校验权限的路由的 url,全部由后端返回,后端会返回当前用户的路由树数组.前端在进入页面前请求接口,把数据拿到: 其次,前端会维护一个路由映射组件的列表,如果路由 ...
- vue递归组件的实现
本文链接:https://blog.csdn.net/weixin_43756060/article/details/87786344vue递归实现图片上的多级菜单 父级组件结构 <templa ...
- 多级级联数据的展示-vue递归组件
如果采用普通的for循环方式,没办法确认数据到底有几层,要写几个for循环,所以想到了递归的方法. 那么在vue里然后实现呢? vue递归组件(组件中使用自己) 父组件中把数据以props形式传给子组 ...
- vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...
- vue实现菜单切换
vue实现菜单切换,点击菜单导航切换不同的内容以及为当前点击的选项添加样式,或者组件. method里: css: html代码: <nav> <ul> <li> ...
- vue树形菜单
vue树形菜单 由于项目原因,没有使用ui框架上的树形菜单,所以自己动手并参考大佬的代码写了一个树形菜单的组件,话不多说,直接上代码.html代码js代码直接调用api 把请求到的数据直接赋值给per ...
- [前端随笔][Vue] 多级菜单实现思路——组件嵌套
说在前面 本篇记录学习了vue-element-admin中的多级菜单的实现 [传送门] @vue/cli 4.2.2:vuex:scss:组件嵌套 正文 创建项目 npm create 项目名 // ...
- vue 递归组件
如果你的项目里面的数据结构是一个树状的数据结构 然后递归组件是一个很好的一个解决你这个数据结构的一个方式 就是组件内部调用自身 tree.vue里面直接tree-node <tree-node& ...
- VUE递归树形目录(vue递归组件)的使用
1.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
随机推荐
- laravel后台扩展包
https://github.com/the-control-group/voyager
- ubuntu上将常用程序拖到左侧栏目
- 重磅发布:阿里开源 Open JDK 长期支持版本 Alibaba Dragonwell
3 月 21 日北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell.作为 Java 全球管理组织 Java Community Process ...
- oracle限制一个用户空闲时间
alter system set resource_limit = true; create profile idletime limit idle_time 3; alter user outln ...
- 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...
- (四)IO流之InputStream和OutputStream
InputStream:定义了字节输入流的抽象类 OutputStream:定义了字节输出流的抽象类;该类所有方法返回void值 FileInputStream:继承InputStream FileO ...
- 基于Tablestore Tunnel的数据复制实战
前言 数据复制主要指通过互联的网络在多台机器上保存相同数据的副本,通过数据复制方案,人们通常希望达到以下目的:1)使数据在地理位置上更接近用户,进而降低访问延迟:2)当部分组件出现故障时,系统依旧可以 ...
- Quick BI独创千人千面的行级权限管控机制
摘要 就数据访问权限而言,阿里巴巴以“被动式授权”为主,你需要什么权限就申请什么权限.但是,在客户交流过程中,我们发现绝大多数企业都是集中式授权,尤其是面向个人的行级权限管控,管理复杂度往往呈几何增长 ...
- 高可用Kubernetes集群原理介绍
■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...
- Android 高仿微信支付键盘
现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...