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实例的代码量的, ...
随机推荐
- Chinese Mahjong UVA - 11210 (DFS)
先记录下每一种麻将出现的次数,然后枚举每一种可能得到的麻将,对于这个新的麻将牌,去判断可不可能胡,如果可以胡,就可以把这张牌输出出来. 因为eye只能有一张,所以这个是最好枚举的,就枚举每张牌成为ey ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- 【mysql】数据库中的DML DDL DCL TCL 及 Online DDL
DDL(data definition language) : 数据库定义语言 用来定义创建操作表的时候用到的一些sql命令,比如CREATE.ALTER.DROP等等. DML(data manip ...
- 刚需,jackjsonjson转化内部类问题
1.今天在编写jackjson将json转换成object的时候,突然报错: nested exception is com.fasterxml.jackson.databind.JsonMappin ...
- javascript之复习(css属性值的计算)
js取div的宽高咋办,css有content-box,border-box,padding-box,表现又不一样.好在有个offsetWidth, <style type="text ...
- js jquery radio 选中 选中值
radio示例: <label><input type="radio" name="type" id="type" val ...
- 洛谷P3338 力
题意: 解: 介绍两种方法. 首先可以把那个最后除的qi拆掉. ①分前后两部分处理. 前一部分可以看做是个卷积.下面的平方不拆开,直接看成gi-j即可. 后一部分按照套路,把循环变量改成从0开始,反转 ...
- vue层级关系的数据管理
项目背景:为一些有层级关系的数据管理做一套后台管理系统,例如一个小区,里面是有许多楼,楼里有许多层,每一层有许多不同的房······,现在就是要实现对这些数据进行增删改查操作. 1.Tree(树形组件 ...
- c#两个listbox怎么把内容添加到另外个listbox
https://bbs.csdn.net/topics/392156324?page=1 public partial class Form1 : Form { public ...
- java练习:质数,匿名内部类创建接口,抽象类派生子类,画圆,字节截取字符串,数字变钱币,五子棋,梭哈
java学习-质数的孤独 正在看质数的孤独,,,于是写了一个练习代码,输出1-100之间的质数 代码比较烂.待完善吧. 这里用到了continue和break,continue指结束当前轮次循环,跳入 ...