今天就跟大家聊聊有关如何在vue中使用文件树组件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

首先是html模板:
接下来是组件部分的源码:
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' }
]
}
]
}
]
}看完上述内容,你们对如何在vue中使用文件树组件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联成都网站设计公司行业资讯频道,感谢大家的支持。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。