最新文章专题视频专题问答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
当前位置: 首页 - 科技 - 知识百科 - 正文

vue文件树组件有哪些使用方法

来源:动视网 责编:小采 时间:2020-11-27 19:50:44
文档

vue文件树组件有哪些使用方法

vue文件树组件有哪些使用方法:这次给大家带来vue文件树组件有哪些使用方法,vue文件树组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。首先是html模板:<li> <p //文件夹加粗表示 :class="{bold: isFolder}" //处理单击事件 打开闭合文件列
推荐度:
导读vue文件树组件有哪些使用方法:这次给大家带来vue文件树组件有哪些使用方法,vue文件树组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。首先是html模板:<li> <p //文件夹加粗表示 :class="{bold: isFolder}" //处理单击事件 打开闭合文件列


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

首先是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网其它相关文章!

推荐阅读:

diff算法如何使用

JS EventEmitter事件具体使用细节

文档

vue文件树组件有哪些使用方法

vue文件树组件有哪些使用方法:这次给大家带来vue文件树组件有哪些使用方法,vue文件树组件使用的注意事项有哪些,下面就是实战案例,一起来看一下。首先是html模板:<li> <p //文件夹加粗表示 :class="{bold: isFolder}" //处理单击事件 打开闭合文件列
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top