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 递归实现树形结构相关推荐

  1. Java8新特性-使用Stream流来实现递归遍历树形结构(案例)

    Java8新特性-Stream流 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来 ...

  2. 利用Stram来递归生成树形结构

    利用Stram来递归生成树形结构 当需要查询有子菜单,或者子部门这一类需要形成树形的数据时,我们可以使用stream流式编程写 实体类 实体类需要有一个子列,类似此处的子城市 @Data @Equal ...

  3. java arraylist 遍历树_Java递归遍历树形结构

    废话不多说了,直接给大家贴代码,具体代码如下所示://菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { ...

  4. vue横向树结构_Vue 递归实现树形结构

    结果展示 先给出两张效果图,左侧是百度Echarts的文档中心截图,右侧是我个人结合项目中文档中心截图 项目中假设为后台管理系统,一般左侧导航都是树形递归,当然现在也有很多的UI框架,随便套一下也是可 ...

  5. java—stream流递归实现树形结构

    一.在项目开发中,经常会遇到像菜单式的页面,如下图 数据表结构一般像一个树形结构一样 对应的Model体 @Data //代替get.set方法 @ApiModel("知识园地视图" ...

  6. Java后端递归构建树形结构

    记录:在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示. 简明:为了简化代码,引入Lombok的Jar包,可省略实体类set().get()方法. <dep ...

  7. php 递归生成树形菜单,递归生成树形结构菜单

    public List listWithTree() { //1.查出所有菜单 List categoryEntities = categoryDao.selectList(null); //2.组装 ...

  8. vue element-UI的树形结构,父级关联,返回数据反选的问题

    因为element-ui的树形结构是添加了父级的联动,没有办法单独取消,那么就有一个问题,比如说在做用户权限分配的时候,添加选择是没有问题的,选择自己要check的节点,通过下面这个方法可以将父级ID ...

  9. vue递归生成树状结构

    生成前 生成后 console.log打印 全部实现代码片段(附备注 <template><divclass="container"style="fon ...

最新文章

  1. Qt 编译出错 Could not create directory
  2. 通过kubernetes release制作k8s rpm包
  3. Markdown入门教程
  4. Vue 左右翻页,点赞动画
  5. jQuery easing 使用方法
  6. 虚拟机和linux系统整理??
  7. 下列关于java语言特性,下列关于Java 语言特点的叙述中,错误的是()。
  8. 面试—每日一题(2)
  9. 教师工作量管理系统设计_教育培训机构为什么一定要用管理系统?
  10. Java 3D期末复习第三章——Java 3D 基本图形功能
  11. 超震惊!!微软产品经理每天的工作内容竟然是这个...
  12. Google浏览器升级为最新打开网页时缓慢 “正在建立安全连接..........”解决方法
  13. C++11 lambda匿名函数看这一篇足以
  14. b区计算机复试国家线,今年调剂太恐怖 B区考研分数线竟比A区高?
  15. 0x00000124蓝屏问题解决方法
  16. matlab pi表示,matlab中pi是什么意思
  17. android 8.0动态申请读写权限
  18. 今晚7:30 | CVPR专场四!UIUC、港中文、港科大
  19. 加工中心主传动系统的机械结构设计
  20. android获取root权限的命令

热门文章

  1. Java中配置加密组件Bouncy_Castle
  2. 菏泽合村并居促土地流转-农业大健康·万祥军:集约谋定高效
  3. 一个关于Integer的秘密
  4. 会议室管理系统----MROS
  5. 刷题总结——烽火传递(单调队列+dp)
  6. 程序员保值的5个秘密
  7. 小米故事:凭什么把MIUI用户做到1亿 | PMcaff-干货
  8. 【干货】从小米发布会看:雷军的七个产品思维
  9. 要嫁就嫁程序员!原因很简单:五成表示工资愿交给另一半!
  10. 谈谈我对Spring IOC的理解