当前位置: 首页 > news >正文

element-plus的el-tree的双向绑定

el-tree改造了下
可选可取消 有默认值 不包含父级id 默认展开 点击节点也可触发选择 节点内容自定义
在这里插入图片描述

<template>{{ childKeys }}<!--default-checked-keys:默认展开值(正常来说需要包含父级id的 但是我们后端不要后端id )show-checkbox:多选框node-key:每个树节点用来作为唯一标识的属性,整棵树应该是唯一的default-expand-all:是否默认展开所有节点expand-on-click-node:是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点default-checked-keys:默认勾选的节点的 key 的数组check-on-click-node:是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点props:配置选项,具体看下表--><el-tree ref="treeRef" style="max-width: 600px" :data="data" show-checkbox node-key="id" :default-expand-all="true":expand-on-click-node='false' :default-checked-keys="childKeys" :check-on-click-node="true" :props="defaultProps"@check-change="checkChange"><template #default="{ node, data }"><span class="custom-tree-node"><span>{{ node.label }}</span><span style="color:red;margin-left: 10px">id:{{data.id }}</span></span></template></el-tree>
</template><script setup>
import { ref } from 'vue';let treeRef = ref(null);
let childKeys = ref([5, 10]); // 初始化选中子节点的 ID
const defaultProps = {children: 'children',label: 'label',
};const data = [{id: 1,label: 'Level one 1',children: [{id: 4,label: 'Level two 1-1',children: [{id: 9,label: 'Level three 1-1-1',},{id: 10,label: 'Level three 1-1-2',},],},],},{id: 2,label: 'Level one 2',children: [{id: 5,label: 'Level two 2-1',},{id: 6,label: 'Level two 2-2',},],},{id: 3,label: 'Level one 3',children: [{id: 7,label: 'Level two 3-1',},{id: 8,label: 'Level two 3-2',},],},
];const checkChange = () => {// 获取所有选中的节点对象const checkedNodes = treeRef.value.getCheckedNodes();// 结果1:获取包含父节点的idchildKeys.value = treeRef.value.getCheckedKeys()// 结果2:提取子节点的 ID,不包括父节点childKeys.value = checkedNodes.filter(node => !node.children) // 只保留没有子节点的节点.map(node => node.id); // 提取 IDconsole.log('默认值', childKeys.value, checkedNodes); // 只包含子节点的 ID
}
</script>
http://www.lryc.cn/news/498878.html

相关文章:

  • 代码随想录-算法训练营day41(动态规划04:01背包,01背包滚动数组,分割等和子集)
  • c#中context.SaveChanges()方法
  • 李飞飞首个“空间智能”模型发布:一张图,生成一个3D世界 | LeetTalk Daily
  • Node.js简单接口实现教程
  • AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!
  • windows文件下换行, linux上不换行 解决CR换行符替换为LF notepad++
  • npm, yarn, pnpm之间的区别
  • 静态链接和动态链接的特点
  • Mac曲线救国实现Bandizip右键一级菜单
  • 进度与预算
  • 【教程】创建NVIDIA Docker共享使用主机的GPU
  • CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)
  • 图论理论基础和存储方式的实现
  • 【实分析】【二】2.2 (c)自然数的序
  • STM32串口接收与发送(关于为什么接收不需要中断而发生需要以及HAL_UART_Transmit和HAL_UART_Transmit_IT的区别)
  • k8s 之storageclass使用nfs动态申请PV
  • vue移动端实现下载(截图)功能
  • 【Golang】Golang基础语法之面向对象:结构体和方法
  • 【西门子PLC.博途】——在S71200里写时间设置和读取功能块
  • 位运算(一)位运算简单总结
  • 工厂方法模式的理解和实践
  • C# 设计模式--观察者模式 (Observer Pattern)
  • 【开发语言】层次状态机(HSM)介绍
  • 03-13、SpringCloud Alibaba第十三章,升级篇,服务降级、熔断和限流Sentinel
  • 【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)
  • leetcode104.二叉树的最大深度
  • 蓝桥杯2117砍竹子(简单易懂 包看包会版)
  • LCD与lvgl
  • SpringBoot 赋能:精铸超稳会员制医疗预约系统,夯实就医数据根基
  • android studio 读写文件操作(应用场景二)