这次给大家带来vue文件树组件使用技巧,vue文件树组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。
本文主要是分析vue官方仓库里的文件树组件[vue github]
demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm
首先是html模板:
//显示文件名 {{model.name}} //若是文件夹的话则显示[+]来控制文件夹的开关闭合 [{{open ? '-' : '+'}}]
-
//利用v-for显示子文件列表,通过递归使用item组件来完成文件树
- //增加一个+标记,单击可以增加子文件
- +
接下来是组件部分的源码:
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'
}) //点击文件夹里的+节点触发 为文件夹添加一个新文件
}
}
})所以设计思路就是通过判断对象是否有子节点来决定是文件夹还是文件,然后通过递归复用
最后是传入组件的数据格式:
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' }
]
}
]
}
]
}大家可以根据这个基本的结构继续拓展文件树的功能和展示效果。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
YothCMS是由 石家庄优斯科技有限公司开发的一套完全开源建站系统,主要面向企业进行快速的建造简洁,高效,易用,安全的公司企业网门户站,稍具技术的开发人员就能够使用本系统以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优越的公司企业网站。YothCMS是基于ASP+Access开发的一款轻巧高效的网站内容管理系统,提供了新闻管理模块,产品管理模块,文件管理模块。在使用过程中可以轻









