const tree = [
{
id: 1,
name: '林俊杰',
nameId: '123',
namsClidrens: [
{
id: 2,
name: '背对背拥抱',
nameId: '1232',
},
{
id: 21,
name: '小酒窝',
nameId: '1232',
},
{
id: 211,
name: '交换人生',
nameId: '1232',
},
],
},
{
id: 11,
name: '周杰伦',
nameId: '456',
namsClidrens: [
{
id: 22,
name: '晴天',
nameId: '12322',
},
{
id: 212,
name: '稻香',
nameId: '12332',
},
{
id: 2311,
name: '七里香',
nameId: '12323',
},
],
},
{
id: 15,
name: '薛之谦',
nameId: '133',
namsClidrens: [
{
id: 24,
name: '演员',
nameId: '15232',
},
{
id: 214,
name: '丑八卦',
nameId: '12532',
},
{
id: 2141,
name: '你还要我怎样',
nameId: '12532',
},
],
},
]
<template>
<div>
<el-tree
class="flow-tree"
ref="treeRef"
:data="treeData"
icon-class=""
:props="defaultProps"
highlight-current
node-key="id"
:filter-node-method="filterNode"
:expand-on-click-node="false"
default-expand-all
@node-click="handleNodeClick"
>
</div>
</template>
<script>
const tree = [
{
id: 1,
name: '林俊杰',
nameId: '123',
namsClidrens: [
{
id: 2,
name: '背对背拥抱',
nameId: '1232',
},
{
id: 21,
name: '小酒窝',
nameId: '1232',
},
{
id: 211,
name: '交换人生',
nameId: '1232',
},
],
},
{
id: 11,
name: '周杰伦',
nameId: '456',
namsClidrens: [
{
id: 22,
name: '晴天',
nameId: '12322',
},
{
id: 212,
name: '稻香',
nameId: '12332',
},
{
id: 2311,
name: '七里香',
nameId: '12323',
},
],
},
{
id: 15,
name: '薛之谦',
nameId: '133',
namsClidrens: [
{
id: 24,
name: '演员',
nameId: '15232',
},
{
id: 214,
name: '丑八卦',
nameId: '12532',
},
{
id: 2141,
name: '你还要我怎样',
nameId: '12532',
},
],
},
]
export default {
name: 'xxx',
data() {
return{
treeData:[],
defaultProps: {
children: 'namsClidrens',
label: 'name',
// 禁止点击一级触发
disabled: function (data) {
if (data.namsClidrens && data.namsClidrens.length > 0) {
return true
} else {
return false
}
},
},
}
},
created(){this.treeData=tree},
methods: {
// 搜索框
filterNode(){},
// 当前点击的每一项
handleNodeClick(data){ this.searchParent(this.treeData, data.id)},
clickNOdeFn(data){
//做处理
},
// 子找父节点
searchParent(map, key){
let tDate = []
for(let i=0 ;i<map.length;i++){
const e=map[i]
if(e.id==key){
tDate.push(e)
break
}else if(e.namsClidrens&&e.namsClidrens.length!==0){
//判断是否还有子节点,若有对子节点进行循环调用
let p=this.searchParent(e.namsClidrens,key)
//若p的长度不为0,则说明子节点在该节点的children内,记录此节点,并终止循环
if(p.length!==0){
p.unshift(e)
tDate = p
this.clickNOdeFn(p)
break
}
}
}
return tDate
}
},
}
</script>