Vue 递归实现树形结构
2019独角兽企业重金招聘Python工程师标准>>>
结果展示
先给出两张效果图,左侧是百度Echarts的文档中心截图,右侧是我个人结合项目中文档中心截图
- 项目中假设为后台管理系统,一般左侧导航都是树形递归,当然现在也有很多的UI框架,随便套一下也是可以用的;
- 楼主这里要总结的是vue组件化的时候,当前树形结构组件自行调用;
- 仅供项目总结,如有不对的地方,请多多包涵。
代码结构
- mTree.vue
<template><li class="tree-items":class="{'active':model.path === this.$route.params.filePath}"><a class="item-title"@click="toggle(model)":class="{'item-hover': model.type === 'file'}">{{ model.name }}<spanclass="item-icon":class="{'openmenu': open}"v-if="model.type !== 'file'"></span></a><ul v-show="open" v-if="model.type === 'directory'" class="child-list-box"><m-tree v-for="item in model.files" :model="item" :key="item.name"></m-tree></ul></li>
</template><script>export default {name: 'mTree',props: ['model', 'index'],data() {return {open: true}},methods: {toggle: function (model) {let self = this;if (model.type === "directory") {this.open = !this.open;} else {console.log('file');}}}}
</script><style lang="less">.tree-items {margin: 8px 0 0 0;padding: 3px;color: #575d6f;border-radius: 5px;cursor: pointer;user-select: none;&.active {.item-title {color: #1357ba;}}&.onHitClass {background-color: #dbdce0;}.item-title {line-height: 1px;font-size: 16px;font-weight: bold;color: #575d6f;&.item-hover {&:hover {color: #1357ba;}}}.item-icon {display: inline-block;transform: rotate(-180deg);margin-left: 12px;width: 7px;height: 7px;background: url('三角形的图片.png') no-repeat center;transition: all .3s;&.openmenu {transform: rotate(0deg);}}.child-list-box {padding-left: 17px;.tree-items {margin: 5px 0;color: #666;text-decoration: none;display: block;font-weight: 300;padding: 4px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;.item-title {font-size: 14px;margin-bottom: 12px;font-weight: normal;}}}}
</style>
- mDemo.vue
<template><div class="doc-center-wrap"><div class="doc-center-slide"><div class="doc-center-searbox"><span class="doc-center-searimg"></span><Input size="large" placeholder="请输入关键字" @on-keyup="searchKeywords" v-model="keywords"/></div><div class="doc-center-tree" id="tree-slide"><ul class="tree-menu-ul" v-for="(menuItem, index) in treeModel" :key="index"><m-tree :model="menuItem" :index="index"></m-tree></ul></div></div></div>
</template><script>import MTree from "./mTree.vue";let data = [{"type": "file","name": "前端框架","path": "about"}, {"type": "file","name": "前端框架","path": "guide"}, {"type": "file","name": "前端框架","path": "zip-guide"}, {"type": "file","name": "UI模块引擎","path": "remote-debugging"},{"type": "directory","name": "云API","files": [{"type": "file","name": "数据云API","path": "component-album"}, {"type": "file","name": "数据云API","path": "component-app"}]}
] let fileFrist = [];function showFristFile(data) {for (let i in data) {let fileModel = data[i];if (fileModel.type === "file") {fileFrist.push(fileModel);} else {showFristFile(fileModel.files);}}return fileFrist;}export default {data(){return {treeModel: data,retrievalWords: showFristFile(data),keywords:''}},components: {MTree},methods:{searchKeywords() {let self = this;let retrievalWords = self.retrievalWords;let keywords = self.keywords;if (!keywords) {self.treeModel= self.treeModel;} else {let arrKeywords = [];for (let i = 0; i < retrievalWords.length; i++) {if (retrievalWords[i].name.toLowerCase().indexOf(keywords.toLowerCase()) !== -1) {arrKeywords.push(retrievalWords[i]);}}self.treeModel = arrKeywords;}}}}
</script>
总结
- 整理的有点杂乱,有空重新整理一下,并且贴出完整的代码
- 项目总结,请多多包涵。
转载于:https://my.oschina.net/u/3041966/blog/1608349
Vue 递归实现树形结构相关推荐
- Java8新特性-使用Stream流来实现递归遍历树形结构(案例)
Java8新特性-Stream流 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来 ...
- 利用Stram来递归生成树形结构
利用Stram来递归生成树形结构 当需要查询有子菜单,或者子部门这一类需要形成树形的数据时,我们可以使用stream流式编程写 实体类 实体类需要有一个子列,类似此处的子城市 @Data @Equal ...
- java arraylist 遍历树_Java递归遍历树形结构
废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...
- vue横向树结构_Vue 递归实现树形结构
结果展示 先给出两张效果图,左侧是百度Echarts的文档中心截图,右侧是我个人结合项目中文档中心截图 项目中假设为后台管理系统,一般左侧导航都是树形递归,当然现在也有很多的UI框架,随便套一下也是可 ...
- java—stream流递归实现树形结构
一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...
- Java后端递归构建树形结构
记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示. 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set().get()方法. <dep ...
- php 递归生成树形菜单,递归生成树形结构菜单
public List listWithTree() { //1.查出所有菜单 List categoryEntities = categoryDao.selectList(null); //2.组装 ...
- vue element-UI的树形结构,父级关联,返回数据反选的问题
因为element-ui的树形结构是添加了父级的联动,没有办法单独取消,那么就有一个问题,比如说在做用户权限分配的时候,添加选择是没有问题的,选择自己要check的节点,通过下面这个方法可以将父级ID ...
- vue递归生成树状结构
生成前 生成后 console.log打印 全部实现代码片段(附备注 <template><divclass="container"style="fon ...
最新文章
- Qt 编译出错 Could not create directory
- 通过kubernetes release制作k8s rpm包
- Markdown入门教程
- Vue 左右翻页,点赞动画
- jQuery easing 使用方法
- 虚拟机和linux系统整理??
- 下列关于java语言特性,下列关于Java 语言特点的叙述中,错误的是()。
- 面试—每日一题(2)
- 教师工作量管理系统设计_教育培训机构为什么一定要用管理系统?
- Java 3D期末复习第三章——Java 3D 基本图形功能
- 超震惊!!微软产品经理每天的工作内容竟然是这个...
- Google浏览器升级为最新打开网页时缓慢 “正在建立安全连接..........”解决方法
- C++11 lambda匿名函数看这一篇足以
- b区计算机复试国家线,今年调剂太恐怖 B区考研分数线竟比A区高?
- 0x00000124蓝屏问题解决方法
- matlab pi表示,matlab中pi是什么意思
- android 8.0动态申请读写权限
- 今晚7:30 | CVPR专场四!UIUC、港中文、港科大
- 加工中心主传动系统的机械结构设计
- android获取root权限的命令