组件内容

<template><div class="tree-box"><divclass="tree-box-content"v-for="nodeItem in data":key="nodeItem.code"><div class="notetitle"><spanclass="icon"@click="childClick(nodeItem)"v-if="nodeItem.children.length"><i :class="nodeItem.open? 'el-icon-minus' : 'el-icon-plus'" /></span><span @click="childClick(nodeItem)"><span class="text">{{ nodeItem[title] }}</span></span></div><divv-if="nodeItem.children && nodeItem.children.length > 0 && nodeItem.open"><myTree:data="nodeItem.children":title="title":fatherNode="nodeItem":value="value"></myTree></div>
</template>
<script>export default {name: "myTree",props: {// 数据data: {type: Array,},// 节点展示的标签对象属性键名title: {type: String,default: "title",},// 树节点表示的值的键名value: {type: String,default: "value",},// 父级节点fatherNode: {type: Object,},},methods: {// 当前组件节点点击事件childClick(nodeItem) {nodeItem.open= !nodeItem.open;// 用于更新节点数据this.$forceUpdate();},}}
</script><style lang='scss' scoped>.tree-box {width: 100%;height: 100%;overflow-y: auto;padding-left: 30px;}.notetitle {display: flex;align-items: center;font-size: 18px;line-height: 36px;}.text:hover {color: #fff;}
</style>

父组件使用

<template><div style="width: 400px;height: 700px;"><myTree :data="data" /></div>
</template><script>
import myTree from "myTree/index.vue";
export default {components: { myTree },data(){data: [{open: false,title: '张三',code: 1,children: []}],}
}
</script>

如果后端没给open字段,就自己添加

let a = function (arr) {for (let i = 0; i < arr.length; i++) {arr[i].open = false;if (arr[i].children.length > 0) {a(arr[i].children);}}
};
for (let i = 0; i < this.data.length; i++) {this.siteList[i].open = false;a(this.data[i].children);
}

vue自定义tree树组件相关推荐

  1. php easyui tree 结构,EasyUI Tree树组件无限循环的解决方法

    在学习jquery easyui的tree组件的时候,在url为链接地址的时,发现如果最后一个节点的state为closed时,未节点显示为文件夹,单击会重新加载动态(Url:链接地址)形成无限循环. ...

  2. vue 定义全局弹框_VUE路由拦截:Vue自定义全局弹窗组件

    前言 在任何一个平台中,如果需要增加用户黏度,除了用户需要的基本内容外,用户登录注册提交信息也是非常重要的一环,可以了解用户基本信息,用户喜欢等. 抛出前后端混合开发外,vue可以轻松的实现路由拦截. ...

  3. vue自定义音频播放组件_易于创建Vue的自定义音频播放器组件

    vue自定义音频播放组件 音频更好 (vue-audio-better) Easy to create custom audio player components for Vue.js. 易于为Vu ...

  4. vue自定义日历小组件

    vue自定义小日历组件 一.前言 自己开发的项目需要用到类似博客侧边栏小日历组件,觉得自己造一个比较随心所欲,更能满足自己的需求,所以决定自己开发一个.最终效果如图所示. 二.日历样式 我的这个日历组 ...

  5. Vue自定义InputNumber 计数器组件

    1.为什么要自己封装一个InputNumber 计数器组件? 因为原始的el-element的el-input-number组件有问题: 原生组件能输入英文,不能限制只能输入数值: 原始组件能通过键盘 ...

  6. Vue 自定义多选组件

    Vue 自定义多选组件 子组件(选项卡) checkBoxCard.vue <template><div class="checkBoxCard">< ...

  7. 前端 vue 自定义导航栏组件高度及返回箭头 自定义 tabbar 图标

    前端vue自定义导航栏组件高度及返回箭头 自定义tabbar图标, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12986 喜 ...

  8. vue 自定义键盘组件_使用Vue自定义数字键盘组件的方法

    这篇文章主要介绍了关于使用Vue自定义数字键盘组件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 最近做 Vue 开发,因为有不少页面涉及到金额输入,产品老是觉得用原生的 inp ...

  9. Element tree树组件 鼠标双击事件

    需求 双击 tree上的子节点,把节点文字显示在输入框中(这里简化一下,双击 tree 显示文字即可,省略 $emit 那一步) 注解:props 可以接收 defaultExpandAll(是否默认 ...

最新文章

  1. python3--装饰器
  2. void什么意思python_python 为什么没有 void 关键字?
  3. 【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上
  4. Azure Sentinel -- 初探系列二 案件调查及追踪
  5. PLSQL 的简单命令之三
  6. cad细等线体不显示_CAD技法大全,如何在CAD中解决好部分图元无法正常显示的问题 ?...
  7. Data Mining with R
  8. Android通过post请求发送一个xml,解析返回xml数据
  9. JS将16进制颜色转为rgba格式
  10. 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
  11. PS CS5制作1寸照片
  12. 已删除的QQ好友聊天记录怎么查看
  13. php网站静态页面模板,用PHP制作静态网站的模板框架
  14. 【资料总结】html开发小实例
  15. c语言——求逆矩阵,伴随矩阵,行列式
  16. 球面坐标系转换为笛卡尔坐标系
  17. #章节四:input()函数
  18. 支付宝app登录授权的infoStr授权登录流程
  19. android sim卡槽,识别Android平板电脑是否具有SIM卡插槽
  20. js mp4解码合并成ffmpeg

热门文章

  1. Java-CAS机制
  2. Redis学习笔记(一)—— 在windows下搭建redis服务器
  3. Exchanger 简单了解
  4. 《静态时序分析实用方法》 第一章翻译
  5. 2022“易观之星”奖项公布,聚焦数字经济,助力数智创新
  6. 从深交所2020年创新课题看券商的数智化布局
  7. brain怎么读_brain是什么意思_brain在线翻译_读音_用法_例句_含义-查字典网
  8. 解决:QWidget: Cannot create a QWidget when no GUI is being used 程序异常结束
  9. FineUI开源版之TreeGrid实现
  10. 你不可不知的《哈利波特》秘密