最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

怎样使用vue文件树组件

来源:懂视网 责编:小采 时间:2020-11-27 19:45:55
文档

怎样使用vue文件树组件

怎样使用vue文件树组件:这次给大家带来怎样使用vue文件树组件,使用vue文件树组件的注意事项有哪些,下面就是实战案例,一起来看一下。本文主要是分析vue官方仓库里的文件树组件[vue github]demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm首先是ht
推荐度:
导读怎样使用vue文件树组件:这次给大家带来怎样使用vue文件树组件,使用vue文件树组件的注意事项有哪些,下面就是实战案例,一起来看一下。本文主要是分析vue官方仓库里的文件树组件[vue github]demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm首先是ht

这次给大家带来怎样使用vue文件树组件,使用vue文件树组件的注意事项有哪些,下面就是实战案例,一起来看一下。

本文主要是分析vue官方仓库里的文件树组件[vue github]

demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm

首先是html模板:

<li>
 <p
 //文件夹加粗表示
 :class="{bold: isFolder}" 
 //处理单击事件 打开闭合文件列表 
 @click="toggle" 
 //处理双击事件 双击子文件,子文件属性变为文件夹 
 @dblclick="changeType"> 
 //显示文件名 
 {{model.name}}
 //若是文件夹的话则显示[+]来控制文件夹的开关闭合
 <span v-if="isFolder">[{{open ? '-' : '+'}}]</span>
 </p>
 <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>

接下来是组件部分的源码:

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'
 }) //点击文件夹里的+节点触发 为文件夹添加一个新文件
 } 
 }
})

所以设计思路就是通过判断对象是否有子节点来决定是文件夹还是文件,然后通过递归复用<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' }
 ]
 }
 ]
 }
 ]
}

大家可以根据这个基本的结构继续拓展文件树的功能和展示效果。

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

怎样使js将键值字符串转为json字符串

怎样使用angular4在多个组件中数据通信

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

怎样使用vue文件树组件

怎样使用vue文件树组件:这次给大家带来怎样使用vue文件树组件,使用vue文件树组件的注意事项有哪些,下面就是实战案例,一起来看一下。本文主要是分析vue官方仓库里的文件树组件[vue github]demo可以查看 https://codepen.io/shayminsky21/pen/xXwxgm首先是ht
推荐度:
标签: 使用 VUE 组件
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top