vue递归实现自定义tree组件

 更新时间:2021年08月20日 11:46:08   作者:Ace.九阶斗宗  
这篇文章主要为大家详细介绍了vue递归实现自定义tree组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue递归实现自定义tree组件的具体代码,供大家参考,具体内容如下

1. 在tree/index.vue中:

<template>
  <div>
      <ul>
          <item :model='data'></item>
      </ul>
  </div>
</template>
 
<script>
import Item from './item'
export default {
    components:{
        Item
    },
    data(){
        return{
            data:{
                title:"一级1",
                children:[
                    {
                        title:"二级1-1",
                        children:[
                            {
                                title:"三级1-1-1",
                                children:[
                                    {
                                        title:"四级1-1-1-1",
                                        children:[
                                            {
                                                title:"五级1-1-1-1-1"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },{
                        title:'二级1-2',
                        children:[
                            {
                                title:"三级1-2-1"
                            }
                        ]
                    }
                ]
            }
        }
    }
}
</script>

2. item.vue组件:

<template>
  <li>
      <div @click="toggle">
          {{model.title}}
          <span v-if="isFolder">[{{open?'-':'+'}}]</span>
      </div>
      <ul v-show="open" v-if="isFolder">
          <item v-for="(child,index) in model.children" :model='child' :key='index'></item>
      </ul>
  </li>
</template>
 
<script>
export default {
    name:'Item',
    props:{
        model:{
            type:Object,
            required:true
        }
    },
    data(){
        return{
            open:false
        }
    },
    computed:{
        isFolder(){
           return this.model.children && this.model.children.length>0
        }
    },
    methods:{
        toggle(){
            if(this.isFolder) this.open =!this.open
        }
    }
}
</script>

3. 在任意组件中使用:

<template>
  <div class="index">
      <Tree></Tree>
  </div>
</template>
 
<script>
    import Tree from "@/components/tree"
    components:{
        Tree
    }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解vue之自行实现派发与广播(dispatch与broadcast)

    详解vue之自行实现派发与广播(dispatch与broadcast)

    这篇文章主要介绍了详解vue之自行实现派发与广播(dispatch与broadcast),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • vue引入外部的js文件的10种方法总结

    vue引入外部的js文件的10种方法总结

    这篇文章主要为大家详细介绍了vue项目中引入外部的js文件的10种方法,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以参考下
    2023-08-08
  • vuex actions传递多参数的处理方法

    vuex actions传递多参数的处理方法

    今天小编就为大家分享一篇vuex actions传递多参数的处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Antd下拉选择,自动匹配功能的实现

    Antd下拉选择,自动匹配功能的实现

    这篇文章主要介绍了Antd下拉选择,自动匹配功能的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vue 动态添加class,三个以上的条件做判断方式

    vue 动态添加class,三个以上的条件做判断方式

    这篇文章主要介绍了vue 动态添加class,三个以上的条件做判断方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • ElementUI Upload源码组件上传流程解析

    ElementUI Upload源码组件上传流程解析

    这篇文章主要为大家介绍了ElementUI Upload源码组件上传流程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Vue项目中如何封装axios(统一管理http请求)

    Vue项目中如何封装axios(统一管理http请求)

    这篇文章主要给大家介绍了关于Vue项目中如何封装axios(统一管理http请求)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • vue实现一个单独的组件注释

    vue实现一个单独的组件注释

    这篇文章主要介绍了vue实现一个单独的组件注释,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue中swiper开启loop后,点击事件不响应的解决方案

    vue中swiper开启loop后,点击事件不响应的解决方案

    这篇文章主要介绍了vue中swiper开启loop后,点击事件不响应的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • proxy实现vue3数据双向绑定原理

    proxy实现vue3数据双向绑定原理

    这篇文章主要介绍了proxy实现vue3数据双向绑定原理,文章以介绍proxy的优点开始展开全文内容,围绕proxy实现vue3数据双向绑定的相关资料,,需要的朋友可以参考一下
    2021-12-12

最新评论