递归实现一个树形组件
<template>
<div>
<div v-for="(item,i) in data1" :key="i">
<span v-if="haveChildren(item)" @click="openClose()" style="padding-right:5px">[{{open? '-' : '+'}}]</span>
{{item.key}}
<div style="margin-left: 20px" v-if="haveChildren(item) && open">
<tree-view :data1="item.children"></tree-view>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'treeView',
data() {
return {
open: false
}
},
computed: {
haveChildren() {
return function (item) {
return item.children && item.children.length > 0
}
}
},
methods: {
openClose() {
this.open = !this.open
}
},
props: {
data1: Array
}
}
</script>
调用
<tree-view :data1="menu" style="margin: 100px">
import treeView from '../../components/tree-view.vue'
效果
