Vue 递归组件 属性组件无限级
作者:chrispy
父组件:
<template>
<div class="custom">
<Ptree :treeListData="treeData"></Ptree>
</div>
</template>
<script>
import Ptree from '@/components/Ptree'
export default {
data () {
return {
treeData: [
{
isOpen: false,
label: '一级01',
value: '1',
children: [
{
isOpen: false,
label: '二级01',
value: '1-1',
children: [
{
isOpen: false,
label: '三级',
value: '1-1-1',
children: [
{
isOpen: false,
label: '四级',
value: '1-1-1-1',
children: [
{
isOpen: false,
label: '五级',
value: '1-1-1-1-1',
children: [
{
isOpen: false,
label: '六级',
value: '1-1-1-1-1'
}
]
}
]
}
]
}
]
},
{
isOpen: false,
label: '二级02',
value: '1-1',
children: [
{
isOpen: false,
label: '三级',
value: '1-1-1',
children: []
}
]
}
]
},
{
isOpen: false,
label: '一级02',
value: '1',
children: [
{
isOpen: false,
label: '二级01',
value: '1-1',
children: []
},
{
isOpen: false,
label: '二级02',
value: '1-1',
children: [
{
isOpen: false,
label: '三级',
value: '1-1-1',
children: []
}
]
}
]
}
]
}
},
components: {
Ptree
}
}
</script>
子组件:
<template>
<div>
<ul>
<li v-for="(item, index) in treeListData" :key="index" :class="[item.isOpen ? 'open' : 'close', item.children && item.children.length ? '' : 'no-children']"><span @click="treeItem(item)">{{item.label}}</span>
<Ptree v-show="item.isOpen" :treeListData="item.children"></Ptree>
</li>
</ul>
</div>
</template>
<script>
export default {
name: 'Ptree',
props: [ 'treeListData' ],
methods: {
treeItem (item) {
item.isOpen = !item.isOpen
}
}
}
</script>
<style scoped>
.tree{
li{line-height:30px;padding-left:30px;position: relative;font-size:14px;
&::after{display:block;clear: both;content: '';width:6px;height:6px;border-top:1px solid #f00;border-right:1px solid #f00;position:absolute;left:14px;top:12px;}
&.open::after{transform: rotate(135deg)}
&.close::after{transform: rotate(45deg)}
&.no-children::after{display:none}
}
}
</style>
猜你喜欢
您可能感兴趣的文章:
- html 左对齐
- html 打开新的页面
- php 翻页
- go 设置或清除环境变量 GOROOT 和 GOPATH
- term查询单个字段里含有单个关键词的文档,terms查询单个字段里含有多个关键词的文档
- Mac下xcrun: error: invalid active developer path
- golang替换字符串
- golang字符串替换
- golang is an unexported field of struct type
- 第一个 Go 程序
- H5 过滤输入法输入表情
- vue.js中使用Export2Excel导出Excel表格
- 微信小程序 封装api 接口文件文件 与 调用
- 微信小程序 滚动banner
- 微信6.7.4 ios12软键盘顶起页面后隐藏不回弹解决方案
- vue 移动端css 初始化
- vue 不支持ie11解决方案
- Vue InputNumber 计数器
- vue 自定义单选和多选组件