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" ...
随机推荐
- 学习JDK1.8集合源码之--LinkedList
1. LinkedList简介 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的.因为它实现了Deque接口,所以也是双端队列的一种实现. 2.Lin ...
- 【风马一族_php】数组函数
原文来自:http://www.cnblogs.com/sows/p/6045699.html (博客园的)风马一族 侵犯版本,后果自负 2016-11-09 15:56:26 数组 函数 php- ...
- 阿里云SaaS生态战略发布,用宜搭5分钟部署OCR文字识别
7月26日,在阿里云合作伙伴峰会上,阿里云发布SaaS生态战略:通过SaaS加速器为合作伙伴提供应用开发.集成.上云.售卖的全链路解决方案,提升开发效率和集成效率,缩短商业化周期. 作为阿里SaaS加 ...
- Linux 内存管理之mmap详解
找了好多,最后发现下面这篇时讲的比较通俗易懂的. Linux内存管理之mmap详解-heavent2010-ChinaUnix博客 http://blog.chinaunix.net/uid-2666 ...
- dialog的进度条
import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import and ...
- Directx11教程(7) 画一个颜色立方体
原文:Directx11教程(7) 画一个颜色立方体 前面教程我们通过D3D11画了一个三角形,本章我们将画一个颜色立方体,它的立体感更强.主要的变动是ModelClass类,在Model ...
- KiCad EDA 如何修改 Pcbnew 线路板的背景色?
KiCad EDA 如何修改 Pcbnew 线路板的背景色? 关于背景色,传统的原理图是白色,线路板是黑色. EDA 软件 类型 颜色 Protel 原理图 浅黄色 Protel PCB 黑色 Orc ...
- 洛谷 P1342 请柬 最短路+Dijkstra算法
目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1342 请柬 题目描述 在电视时代,没有多少人观看戏 ...
- 文字内容展开与折叠jquery代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WPF疑难杂症之一(3D场景)
原文:WPF疑难杂症之一(3D场景) 最近2个月一直在学习WPF,在实际的开发中遇到下面一个3D场景有关的问题,我先给出问题代码:首先是在资源中定义了一个3D变换组:<Window x:Clas ...