vue2.0+Element-ui应用【Tree树形控件】
2018-12-06 19:46
597 查看
自己的treeDemo:
<template> <div class="treeDemo" style="height: 300px"> <el-scrollbar style="height:100%"> <el-tree :data="treeData" @node-click="handleNodeClick" :expand-on-click-node="false"> <span slot-scope="{ node, data }"> <i :class="node.icon"></i> {{ node.label }} </span> </el-tree> </el-scrollbar> </div> </template>
<script> export default { data() { return { treeData: [], }; }, created() { this.actionGetCatalog(); }, methods: { actionGetCatalog() { console.log("actionGetCatalog!"); let data=[ {"catalogId": 58,"parentId": -1,"name": "一级目录1"}, {"catalogId": 59,"parentId": 58,"name": "二级目录1"}, {"catalogId": 60, "parentId": 59,"name": "三级目录1"}, {"catalogId": 61,"parentId": 59,"name": "三级目录2"}, {"catalogId": 62, "parentId": 59, "name": "三级目录3"}, {"catalogId": 63, "parentId": 59, "name": "三级目录4"}, {"catalogId": 64, "parentId": 58, "name": "二级目录2"}, {"catalogId": 65, "parentId": 64, "name": "三级目录5"}, {"catalogId": 66, "parentId": 64, "name": "三级目录6"}, {"catalogId": 67, "parentId": -1, "name": "一级目录2"}, {"catalogId": 68, "parentId": 67, "name": "二级目录3"} ]; for (let i = 0; i < data.length; i++) {//把"name"换成"label" data[i].label = data[i].name; delete data[i].name; } console.log(data); this.treeData = this.getJsonTree(data, { id: 'catalogId', pid: 'parentId', children: 'children' }); console.log(this.treeData); }, handleNodeClick(data) { console.log("handleNodeClick!"); console.log(data.label); console.log(data.catalogId); }, //将json(一般从后台获取)转成jsonTree格式 参考文档:https://blog.csdn.net/unamattin/article/details/77152451 getJsonTree(data, config) { let id = config.id || 'id', pid = config.pid || 'pid', children = config.children || 'children'; let idMap = [], jsonTree = []; data.forEach(function (v) { idMap[v[id]] = v; }); data.forEach(function (v) { let parent = idMap[v[pid]]; if (parent) { !parent[children] && (parent[children] = []); parent[children].push(v); } else { jsonTree.push(v); } }); this.treeAddIcon(jsonTree);//循环遍历给tree加图标 return jsonTree; }, treeAddIcon(data) { for (let i = 0; i < data.length; i++) { if (data[i].children) { data[i].icon = "iconfont icon-wenjianjia";//icon来自阿里巴巴矢量图标库http://iconfont.cn this.treeAddIcon(data[i].children) } else { data[i].icon = "iconfont icon-wenjian"; } } } } } </script> <style>//去除横向滚动条 .treeDemo .el-scrollbar__wrap { overflow-x: hidden; } </style>
效果图:
相关文章推荐
- vue elementUI tree树形控件获取父节点ID的实例
- vue2.0基于vue-cli,element-ui饿了么vue前端开源项目制作vue的树形table,treeTable
- operamasks-ui2.0 +MVC4.0+EF5.0实战之二 功能菜单及树形控件(Tree)
- vue elementUI tree树形组件遇到的问题
- 基于vue.js 2.0,不使用webpack的nodejs服务,只在浏览器上单独使用在Element UI的Tree树形控件
- Element-ui树形控件el-tree使用过程中遇到的问题
- vue中element-ui树形控件自定义节点,注意一下
- Vue2.0 UI框架Element运用之DateTimePicker(el-date-picker)初始值及时间格式转化等细节问题
- VUE2.0+Element-UI+Echarts封装的组件实例
- vue+element UI实现树形表格
- vue2.0 使用element-ui里的upload组件实现多图上传。采用FORMDATA的方式上传。
- vue+element-ui简单制作后台管理系统以及element table组件的应用
- Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态
- vue+elementUi时间控件
- vue--element-ui--tree组件解决从外部按钮取消选中状态
- vue2.0 使用element-ui里的upload组件实现图片预览效果方法
- 使用Vue与ElementUI开发时,关于时间控件的问题
- vue2.0+element-ui(01简单点的单页面)
- 【前后不分离之】vue+elementui+webpack+springboot 单页面 应用
- vue2.0 + element UI 中 el-table 数据导出Excel的方法