一、效果图:

二、代码(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递归菜单的更多相关文章

  1. vue路由菜单权限设置就button权限设置

    路由权限的设计思路: 首先,我们的需要校验权限的路由的 url,全部由后端返回,后端会返回当前用户的路由树数组.前端在进入页面前请求接口,把数据拿到: 其次,前端会维护一个路由映射组件的列表,如果路由 ...

  2. vue递归组件的实现

    本文链接:https://blog.csdn.net/weixin_43756060/article/details/87786344vue递归实现图片上的多级菜单 父级组件结构 <templa ...

  3. 多级级联数据的展示-vue递归组件

    如果采用普通的for循环方式,没办法确认数据到底有几层,要写几个for循环,所以想到了递归的方法. 那么在vue里然后实现呢? vue递归组件(组件中使用自己) 父组件中把数据以props形式传给子组 ...

  4. vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单

    今天分享的不是技术,今天给大家分享个插件,针对现有的vue右键菜单插件,大多数都是需要使用插件本身自定义的标签,很多地方不方便,可扩展性也很低,所以我决定写了一款自定义指令调用右键菜单(vuerigh ...

  5. vue实现菜单切换

    vue实现菜单切换,点击菜单导航切换不同的内容以及为当前点击的选项添加样式,或者组件. method里: css: html代码: <nav> <ul> <li> ...

  6. vue树形菜单

    vue树形菜单 由于项目原因,没有使用ui框架上的树形菜单,所以自己动手并参考大佬的代码写了一个树形菜单的组件,话不多说,直接上代码.html代码js代码直接调用api 把请求到的数据直接赋值给per ...

  7. [前端随笔][Vue] 多级菜单实现思路——组件嵌套

    说在前面 本篇记录学习了vue-element-admin中的多级菜单的实现 [传送门] @vue/cli 4.2.2:vuex:scss:组件嵌套 正文 创建项目 npm create 项目名 // ...

  8. vue 递归组件

    如果你的项目里面的数据结构是一个树状的数据结构 然后递归组件是一个很好的一个解决你这个数据结构的一个方式 就是组件内部调用自身 tree.vue里面直接tree-node <tree-node& ...

  9. VUE递归树形目录(vue递归组件)的使用

    1.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

随机推荐

  1. laravel后台扩展包

    https://github.com/the-control-group/voyager

  2. ubuntu上将常用程序拖到左侧栏目

  3. 重磅发布:阿里开源 Open JDK 长期支持版本 Alibaba Dragonwell

    3 月 21 日北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell.作为 Java 全球管理组织 Java Community Process ...

  4. oracle限制一个用户空闲时间

    alter system set resource_limit = true; create profile idletime limit idle_time 3; alter user outln ...

  5. 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...

  6. (四)IO流之InputStream和OutputStream

    InputStream:定义了字节输入流的抽象类 OutputStream:定义了字节输出流的抽象类;该类所有方法返回void值 FileInputStream:继承InputStream FileO ...

  7. 基于Tablestore Tunnel的数据复制实战

    前言 数据复制主要指通过互联的网络在多台机器上保存相同数据的副本,通过数据复制方案,人们通常希望达到以下目的:1)使数据在地理位置上更接近用户,进而降低访问延迟:2)当部分组件出现故障时,系统依旧可以 ...

  8. Quick BI独创千人千面的行级权限管控机制

    摘要 就数据访问权限而言,阿里巴巴以“被动式授权”为主,你需要什么权限就申请什么权限.但是,在客户交流过程中,我们发现绝大多数企业都是集中式授权,尤其是面向个人的行级权限管控,管理复杂度往往呈几何增长 ...

  9. 高可用Kubernetes集群原理介绍

    ■ 文/ 天云软件 云平台开发工程师 张伟 1. 背景 Kubernetes作为容器应用的管理中心,对集群内部所有容器的生命周期进行管理,结合自身的健康检查及错误恢复机制,实现了集群内部应用层的高可用 ...

  10. Android 高仿微信支付键盘

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...