树形接口返回两级,子集找父集id

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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值