Vue recursively implements custom tree components

Vue recursively implements custom tree components

This article shares the specific code of Vue recursively implementing a custom tree component for your reference. The specific content is as follows

1. In 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:"Level 1",
                children:[
                    {
                        title:"Level 1-1",
                        children:[
                            {
                                title:"Level 3 1-1-1",
                                children:[
                                    {
                                        Title:"Level 4 1-1-1-1",
                                        children:[
                                            {
                                                title:"Level 5 1-1-1-1-1"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    },{
                        title:'Level 1-2',
                        children:[
                            {
                                Title:"Level 3 1-2-1"
                            }
                        ]
                    }
                ]
            }
        }
    }
}
</script>

2. item.vue component:

<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. Use in any component:

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

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • How to implement Vue's tree component
  • Use vant TreeSelect classification selection component operation in vue
  • Vue uses zTree plug-in to encapsulate tree component operation example
  • Vue recursive component + Vuex development tree component Tree--simple implementation of recursive component
  • Vue component tree implements tree menu
  • Vue2 component tree implements unlimited level tree menu
  • Vue.js component tree realizes multi-level linkage between provinces and cities
  • Vue.js component tree implements unlimited level tree menu

<<:  Detailed explanation of several ways to obtain the PID (TID, LWP) of Linux threads

>>:  Detailed explanation of three relationship examples of MySQL foreign keys

Recommend

How to avoid garbled characters when importing external files (js/vbs/css)

In the page, external files such as js, css, etc. ...

MySQL 8.0.15 download and installation detailed tutorial is a must for novices!

This article records the specific steps for downl...

MySQL partitions existing tables in the data table

Table of contents How to operate Operation proces...

Several ways of running in the background of Linux (summary)

1. nohup Run the program in a way that ignores th...

11 ways to remove duplicates from js arrays

In actual work or interviews, we often encounter ...

The process of building and configuring the Git environment in Docker

Configure Git environment in Docker At work, I en...

MySQL database deletes duplicate data and only retains one method instance

1. Problem introduction Assume a scenario where a...

Web Design Tutorial (2): On Imitation and Plagiarism

<br />In the previous article, I introduced ...

Tutorial on upgrading, installing and configuring supervisor on centos6.5

Supervisor Introduction Supervisor is a client/se...

Vue implements scrollable pop-up window effect

This article shares the specific code of Vue to a...

Vue sample code for easily implementing virtual scrolling

Table of contents Preface Rolling principle accom...

About Docker security Docker-TLS encrypted communication issues

Table of contents 1. Security issues with Docker ...

Implementation of sharing data between Docker Volume containers

What is volume? Volume means capacity in English,...

MySQL index cardinality concept and usage examples

This article uses examples to explain the concept...