vue.js 树菜单 递归组件树来实现
树形视图 Example: https://vuefe.cn/v2/examples/tree-view.html
参照前辈方法实现的,觉得不错,记录一下:

父组件:
<!-- 菜单树 -->
<ul class="T_down" v-for="(menuItem,index) in customerArray" :key="index">
<tree-menu :treeData="menuItem"></tree-menu>
</ul> import treeMenu from './treeMenu.vue' myMailTree: [
{
id: ,
label: '发件箱',
children: []
},
{
id: ,
label: '收件箱',
children: [
{
id: ,
label: '常用邮件',
},
{
id: ,
label: '常用邮件',
children: [
{
id: ,
label: '常用邮件',
children: [
{
id: ,
label: '常用邮件',
},
{
id: ,
label: '常用邮件',
children: [
{
id: ,
label: '常用邮件',
},
{
id: ,
label: '常用邮件',
children: [
{
id: ,
label: '常用邮件',
},
{
id: ,
label: '常用邮件',
},
]
},
]
},
]
},
{
id: ,
label: '常用邮件',
},
]
},
]
},
{
id: ,
label: '草稿箱',
},
], components: {
'tree-menu': treeMenu
},
子组件:
<template>
<li>
<h3>
<i v-if="isFolder" @click="toggle" class="iconfont" :class="[open ? 'icon-arrow-down': 'icon-arrow-right']"></i>
<span class="label">{{treeData.label}}
<em>()</em>
</span>
<span class="T_set">
<i class="iconfont icon-subordinate"></i>
<i class="iconfont icon-subordinate"></i>
<i class="iconfont icon-subordinate"></i>
</span>
</h3>
<ul class="T_down" v-show="open" v-if="isFolder">
<tree-menu v-for="item in treeData.children" :key="item.id" :treeData="item"></tree-menu>
</ul>
</li>
</template> <script>
export default {
name: 'treeMenu',
props: ['treeData'],
data() {
return {
open: false
}
},
computed: {
isFolder() {
return this.treeData.children && this.treeData.children.length
}
},
methods: {
toggle: function() {
if (this.isFolder) {
this.open = !this.open
}
}
}
}
</script>
less
ul.T_down {
//菜单树
// border: 1px solid red;
background-color: #fff;
padding-left: 17px;
line-height: 35px;
li {
>h3 {
// border: 1px solid red;
font-weight: normal;
font-size: 14px;
padding-left: 23px;
cursor: default;
position: relative;
>i.iconfont {
display: block;
width: 23px;
height: %;
text-align: center;
font-size: 12px;
position: absolute;
left: ;
top: ;
&:hover {
color: #008cee;
cursor: pointer;
}
}
>span.label {
color: #;
>em {
font-size: 12px;
font-style: normal;
color: #;
}
}
&:hover {
background-color: #ddd;
span.T_set {
display: block;
}
}
span.T_set {
float: right;
margin-right: 10px;
display: none;
i.iconfont {
display: inline-block;
padding: 2px;
font-size: 13px;
&:hover {
color: #008cee;
cursor: pointer;
}
}
}
}
}
}
参考链接:
https://www.cnblogs.com/caihg/p/6208105.html
.
vue.js 树菜单 递归组件树来实现的更多相关文章
- 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...
- vuejs学习--递归组件(树型表格分享)
前言 学习vue有一段时间了,最近使用vue做了一套后台管理系统,其中使用最多就是递归组件,也因为自己对官方文档的不熟悉使得自己踩了不少坑,今天写出来和大家一起分享. 递归组件 组件在它的模板内可以递 ...
- Vue.JS快速上手(组件生命周期)
一.什么是组件 组成网页独立功能基本单元(片段), 复用.维护.性能, Vue.js中的组件就是一个Vue的实例,Vue中的组件包含data/methods/computed. 一个Vue.js的应用 ...
- vue+elementUI 做的递归组件
废话少说,直接上最新鲜的干货 当然,你得提前安装好bootstrap,router,element-ui,vue-axios 1.上递归组件,此处参考了某位大神的代码,具体不知道是谁,因为到处都有人用 ...
- 基于Vue.js的表格分页组件
有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更一篇文章,分享一个自己编写的一个Vue的小组件,名叫BootPage. 不了解Vue.js的童鞋 ...
- Vue.js的表格分页组件
转自:http://www.cnblogs.com/Leo_wl/p/5522299.html 有一段时间没更新文章了,主要是因为自己一直在忙着学习新的东西而忘记分享了,实在惭愧. 这不,大半夜发文更 ...
- 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...
- vue.js中的全局组件和局部组件
组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能. 组件的使用有三 ...
- Vue.js 2.x:组件的定义和注册(详细的图文教程)
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 什么是组件 组件: 组件的出现,就是为了拆分Vue实例的代码量的, ...
随机推荐
- 每天一个Linux命令(05):tail命令
tail命令用于输入文件中的尾部内容.tail命令默认在屏幕上显示指定文件的末尾10行.如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题.如果没有指定文件或者文件名为"-&qu ...
- 「TJOI2015」旅游 解题报告
「TJOI2015」旅游 LCT沙比题 考虑我们其实是在维护一条链的\(\max\limits_{i<j} v_j-v_i\) 每次直接拿左右子树更新一下就可以了 写的时候把两个方向都维护一下, ...
- RabbitMQ图解
一.MQ对比 二.RabbitMQ模式 三.队列模式 四.公平分发 五.主题模式
- nio再学习之通道channel
通道(Channel):用于在数据传输过程中,进行输入输出的通道,其与(流)Stream不一样,流是单向的,在BIO中我们分为输入流,输出流,但是在通道中其又具有读的功能也具有写的功能或者两者同时进行 ...
- JAVA多线程之volatile 与 synchronized 的比较
一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间--线程栈空 ...
- 洛谷P4175 网络管理
题意:链上带修第k大. 这毒瘤题...别看题意只有7个字,能把我吊打死... 介绍其中两种做法好了.其实思想上是一样的. 对于每一个点,建立权值线段树,维护它到根路径上的所有权值. 一条路径上的点集就 ...
- django 配置media 存放调用 图片、图标等文件
一.需求分析: 一般在网站开发中,有很多类似于用户头像.用户上传的文件,这些经常要改变的媒体文件,需要有一个地方存放,于是就需要media目录,起到跟static类似的功能. 二.在settings. ...
- JavaScript之美读书笔记一
前两天去图书馆借了一本<JavaScript之美>,在书架上无意中看到的,想着那就看看吧. 第一章 原型 有些JavaScript爱好者宣称JavaScript是一种基于原型而不是面向对象 ...
- python zip()函数的使用
解释: 后缀为zip的文件肯定都见过吧?zip是打包压缩好的一个文件,所以,zip()函数也简单的理解为打包压缩函数,将不同个数相同类型的字段结合在一起. 官方定义为:zip() 函数用于将可迭代的对 ...
- JS事件(四)坐标位置
1.客户区坐标位置 (相对于客户端视口,而无关浏览器缩放) clientX与clientY:表示事件发生时鼠标在视口的坐标,不包括页面滚动距离,因此不代表鼠标在页面上的位置. 2.页面坐标位置 pa ...