深入解析Vue文件树组件使用
2018-12-09 11:19:16来源:博客园 阅读 ()
这篇文章主要为大家详细介绍了vue文件树组件的使用方法,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。
首先是html模板:
<li> <div //文件夹加粗表示 :class="{bold: isFolder}" //处理单击事件 打开闭合文件列表 @click="toggle" //处理双击事件 双击子文件,子文件属性变为文件夹 @dblclick="changeType"> //显示文件名 {{model.name}} //若是文件夹的话则显示[+]来控制文件夹的开关闭合 <span v-if="isFolder">[{{open ? '-' : '+'}}]</span> </div> <ul v-show="open" v-if="isFolder"> //利用v-for显示子文件列表,通过递归使用item组件来完成文件树 <item class="item" v-for="model in model.children" :model="model"> </item> //增加一个+标记,单击可以增加子文件 <li class="add" @click="addChild">+</li> </ul> </li>//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
接下来是组件部分的源码:
Vue.component('item', {
template: '#item-template',
props: {
model: Object //将文件数据通过props传入
},
data: function () {
return {
open: false //open表示文件夹闭合状态
}
},
computed: {
isFolder: function () {
return this.model.children &&
this.model.children.length
}
}, //计算对象是否有子节点并且子节点数大于0来判断是否是文件夹
methods: {
toggle: function () {
if (this.isFolder) {
this.open = !this.open
}
}, //控制文件夹闭合的方法 单击触发改变open
changeType: function () {
if (!this.isFolder) {
Vue.set(this.model, 'children', [])
this.addChild()
this.open = true
}
}, //双击触发,通过给文件增加子节点来使文件属性变成文件夹
addChild: function () {
this.model.children.push({
name: 'new stuff'
}) //点击文件夹里的+节点触发 为文件夹添加一个新文件
} //欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
}//面向1-3年前端人员
})//帮助突破技术瓶颈,提升思维能力
所以设计思路就是通过判断对象是否有子节点来决定是文件夹还是文件,然后通过递归复用<item>组件来展示文件树的效果。
最后是传入组件的数据格式:
var data = {
name: 'My Tree',
children: [
{ name: 'hello' },
{ name: 'wat' },
{
name: 'child folder',
children: [
{
name: 'child folder',
children: [
{ name: 'hello' },
{ name: 'wat' }
]
},
{ name: 'hello' },
{ name: 'wat' },
{
name: 'child folder',
children: [
{ name: 'hello' },
{ name: 'wat' }
]//欢迎加入前端全栈开发交流圈一起学习交流:864305860
}//面向1-3年前端人员
]//帮助突破技术瓶颈,提升思维能力
}
]
}
大家可以根据这个基本的结构继续拓展文件树的功能和展示效果。
结语
感谢您的观看,如有不足之处,欢迎批评指正。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- jQuery插件开发全解析 2020-03-25
- vue.js开发环境搭建教程 2020-03-16
- Vue input控件通过value绑定动态属性及修饰符的方法 2020-03-05
- jquery遍历筛选数组的几种方法和遍历解析json对象 2020-02-29
- JS批量操作CSS属性详细解析 2020-02-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash