el-tree 父节点只有一个子节点时,用getCheckedNodes方法选择的值父节点和子节点值都有

在做项目时,遇到了一个特殊问题,在选择左侧指标树的时候,如果父节点有多个子节点,选择后右侧显示内容出现一个子节点的值是没问题的,如图所示

但是选择一个父节点只有一个子节点的时候,父节点的值和子节点的值却都出现了右侧,如图

看了一下代码,运用到了getCheckedNodes([leafOnly,includeHalfChecked]) 方法, leafOnly:表示是否只返回叶子节点的数据,默认值为false,includeHalfChecked表示是否包含半选中状态的节点。默认false,只要把getCheckedNodes(true, true)设置为true即可

function checkChange() {
  const checkedNodes = treeRef.value.getCheckedNodes() //解决父节点只有一个子节点时,选择的值父节点和子节点值都有
  selectList.value = Array.from(new Set(checkedNodes.filter((i) => i.paIndiId)))
  console.log(selectList.value, 'selectList.value')
}

修改之后,这样就完美解决问题啦!!

 const checkedNodes = treeRef.value.getCheckedNodes(true, true)

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-tree组件的getCheckedNodes方法用于获取选中的节点。可以在@check-change事件中调用this.$refs.tree.getCheckedNodes()方法来获取选中的节点。例如: ```javascript //节点选中状态发生变化的回调 handleCheckChange(data, checked, indeterminate) { //获取所有选中的节点 let res = this.$refs.tree.getCheckedNodes() let arrDeptId = [] res.forEach((item) => { arrDeptId.push(item.value) }) // this.dataTree 就是选中的数据 this.dataTree = arrDeptId } ``` 另外,也可以使用更简单的方法来获取选中的子节点和半选的节点: ```javascript //节点选中状态发生变化的回调 handleCheckChange(data, checked, indeterminate) { //获取所有选中的子节点 let res1 = this.$refs.tree.getCheckedKeys() // 获取半选的节点 let res2 = this.$refs.tree.getHalfCheckedKeys() let arrDeptId = [...res1, ...res2] this.dataTree = arrDeptId } ``` 在el-tree组件中,可以设置check-strictly属性来控制是否严格遵循父子节点不互相关联的做法,默认为false。另外,node-key属性用于标识每个树节点的唯一标识属性。例如: ```html <el-form-item label="权限"> <!-- check-strictly 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false --> <!-- node-key 每个树节点用来作为唯一标识的属性,整棵树应该是唯一的 --> <el-tree ref="tree" :check-strictly="checkStrictly" :data="routes" node-key="id" :default-expanded-keys="expandedRoles" :props="defaultProps" show-checkbox /> </el-form-item> ``` 希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Element Tree 复选框获取选中的节点](https://blog.csdn.net/weixin_44640323/article/details/119415607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ElementUI tree控件获取选中的节点(含父节点)](https://blog.csdn.net/Irene1991/article/details/114969502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值