csdn终于更新完成了哈,ok,步入正题

像这种树形结构的核心思想就是:递归思想,知道使用递归,其实这个例子函数的封装也就很简单喽

实现步骤:

设置的props:
                        data 数据结构 默认为 []

定制模板:
                        不可定制

监控状态变化:
                        事件名on-select-change 点击树节点触发

使用:在需要的地方插入形如下面的代码,

 <m-tree :data="treeList"></m-tree>

你的数据结构应该是下面的类型:
                    传入的数据结构:
                        [
                        {
                            title:XXX,
                            children:[
                                {
                                    title:XXXX,
                                    chidren:[]
                                }
                            ]
                        }]

如下示例:

    var data = [{title: "目录",chidren: [{title: "我的音乐",chidren: [{title: "周杰伦",chidren: [{title: "发如雪"}]}, {title: "王杰",chidren: [{title: "一场游戏一场梦"}]}]}, {title: "我的照片"}]}];

利用vue封装了一个树形菜单组件,效果图如下:

<!DOCTYPE html>
<html lang="zh-cn"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><style>ul {padding: 0;margin: 0;list-style: none;}.tree-menu {width: 360px;height: 100%;padding: 0px 12px;border-right: 1px solid #e6e9f0;}.tree-menu-comm span {display: block;font-size: 12px;position: relative;}.tree-contro .ico {background-position: 3px -92px;}.tree-title .ico {position: absolute;left: -13px;top: 0;width: 15px;height: 26px;background: url(./folder-tree.png) no-repeat 4px -43px;opacity: 0.8;}.tree-menu-comm span strong {display: block;width: 82%;position: relative;line-height: 22px;padding: 2px 0;padding-left: 5px;color: #161719;font-weight: normal;}.tree-nav {background: #e7f2fe;border: 1px solid #bfdaf4;padding-left: 14px;margin-left: 0px;}.tree-title {border: 1px solid #fff;margin-top: 1px;}/*无箭头*/.tree-contro-none .ico {background-position: -999px -99px;}/*箭头朝下*/.tree-contro .ico {background-position: 3px -92px;}</style><script src="../vue.js"></script><script></script>
</head><body>
<div id="app"><j-costum :data="treeList"></j-costum>
</div>
<script>var data = [{title: "目录",chidren: [{title: "我的音乐",chidren: [{title: "周杰伦",chidren: [{title: "发如雪"}]}, {title: "王杰",chidren: [{title: "一场游戏一场梦"}]}]}, {title: "我的照片"}]}];
Vue.component("j-tree-list",{computed:{count(){var c = this.increment;return ++c;},stylePadding(){return {'padding-left':this.count * 16 + 'px'}}},props:{data:{type:Array,default:[]},increment:{type:Number,default:0}},data:function(){return {fold:true}},template:`<ul><li v-for="item in data"><div class="tree-title" :style="stylePadding"><span><strong>{{item.title}}</strong><i class="ico"@click="foldFn(item)"></i></span></div><j-tree-list:increment="count"v-if="item.chidren"v-show="fold":data="item.chidren"></j-tree-list></li></ul>`,methods:{foldFn(item){this.fold = !this.fold;}}
})Vue.component("j-costum",{props:{data:{type:Array,default:[]}},template:`<div class="tree-menu-comm tree-menu"><j-tree-list :data="data"></j-tree-list></div>`})var vm = new Vue({el:"#app",data:{treeList:data}});</script>
</body></html>

Vue封装树形菜单组件相关推荐

  1. Vue.js--下拉菜单组件

    效果 #### 入口页面 index.html <!DOCTYPE html> <html lang="en"> <head><meta ...

  2. vue封装一个日历组件

    图示 封装的组件的代码如下 <template><div class="calendar"><!-- 选择日历的弹出层 --><div c ...

  3. vue封装自己的组件库 02.封装dialog组件

    link: https://blog.csdn.net/weixiaowei_2016/article/details/104702793 四.封装一个element-ui风格的dialog组件 前置 ...

  4. vue 封装返回顶部组件

    我的环境是vue+vant+ts, 相信大家应该知道怎么改成vue+js的写法 先看效果图: HTML: <template><!-- 返回顶部组件 2020-02-17 Walke ...

  5. 从 0 到 1 用 Vue 封装一个日历组件

    写在前面 双手奉上代码链接: 传送门 - ajun568(https://github.com/ajun568/vue-calendar),点击文末阅读原文直达 双脚奉上最终效果图: 需求分析 需求分 ...

  6. vue封装一个弹幕组件

    说在前面

  7. Element(3) 使用v-org-tree组件实现组织树形菜单

    一.前言 iview-admin中提供了 v-org-tree 这么一个vue组件可以实现树形菜单,下面小编来提供一下在element-ui中的使用教程 小编集成了el-dropdown下拉菜单(鼠标 ...

  8. vue2.0基于vue-cli,element-ui饿了么vue前端开源项目制作vue的树形table,treeTable

    该组件基于技术栈,主要涉及vue-cli生成的webpack项目脚手架,在此脚手架项目基础上完成的,整合了element-ui开源vue的UI项目 1.vue-cli的安装使用 npm install ...

  9. Vue 人资 实战篇七 员工管理上 封装通用的组件、formatter属性、过滤器的使用、树形结构、建立公共导入的页面路由、excel的导入和导出、

    1.0 封装一个通用的工具栏 目标:封装一个通用的工具栏供大家使用 1.1 通用工具栏的组件结构 在后续的业务开发中,经常会用到一个类似下图的工具栏,作为公共组件,进行一下封装 组件 src/comp ...

最新文章

  1. native2ascii用法
  2. SpringMVC—对Ajax的处理(含 JSON 类型)(2)
  3. Bing.com在.NET Core 2.1上运行
  4. 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
  5. python中elif和while简单介绍及注意事项(含笔记)
  6. ABAP--使用SLIN事务码进行ABAP程序扩展语法检查,提高程序开发的质量
  7. C语言 文件读写 ferror 函数 - C语言零基础入门教程
  8. 我的笔记本的鼠标又乱跑了!寻求帮助!
  9. 【高校宿舍管理系统】第十章 缺勤管理、报修管理、来访人员管理以及公告管理
  10. 【一天一个C++小知识】008.内联函数
  11. HTML5+CSS3 Pink老师课后作业——小米logo过渡切换的实现
  12. Roson的Qt之旅 #117 QTcpSocket和QUdpSocket详细介绍
  13. 【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
  14. JavaSE :自问自答
  15. k-fold cross validation 相关的帖子、论文 建议收藏哦 ~
  16. 人只需要成功一次就够了
  17. Sentinel中有时候会搞乱的blockHandler与fallback
  18. java操作txt文本(二):删除文本括号内的内容
  19. 从“机械复制”到“机械原创”:人工智能引发文化生产革命
  20. 世界杯感悟--我的2022卡塔尔世界杯

热门文章

  1. 对对DllRegisterServer的调用失败,错误代码为0x8007005的解决办法
  2. 直播声卡-直播的同时,让手机快充不掉电方案
  3. QT中的D指针与Q指针
  4. 腾讯:只许我抄天下人,不许天下人抄我!
  5. python海象运算符怎么用_python中的海象运算符
  6. 255work 变量举一反三之1 饭馆菜单程序
  7. wps带阴影的边框怎么设置_WPS表格阴影边框如何设置,图文详解如何设置
  8. 网工大题题型总结(2)---设备类型及设备故障问题
  9. Linux安装arthas(阿尔萨斯)
  10. 2022DASCTF Apr X FATE 防疫挑战赛