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

vue3 基于el-tree增加、删除节点(非TypeScript 写法)

话不多说,直接贴代码

<template><div class="custom-tree-container"><!-- <p>Using render-content</p><el-tree style="max-width: 600px" :data="dataSource" show-checkbox node-key="id" default-expand-all:expand-on-click-node="false" :render-content="renderContent" /> --><p>Using scoped slot</p><el-tree style="max-width: 600px" :data="dataSource" show-checkbox node-key="id" default-expand-all:expand-on-click-node="false"><template #default="{ node, data }"><span class="custom-tree-node"><span>{{ node.label }}</span><span><a @click="append(data)"> Append </a><a style="margin-left: 8px" @click="remove(node, data)"> Delete </a></span></span></template></el-tree></div>
</template><script>
import { reactive, ref, toRefs } from 'vue'
// import {Node} from 'element-plus/es/components/tree/src/model/node'export default {name: 'part',setup() {const state = reactive({dataSource: [{id: 1,label: 'Level one 1',children: [{id: 4,label: 'Level two 1-1',children: [{id: 9,label: 'Level three 1-1-1'}]}]}]})const append = (data) => {let treeNodeId = data.$treeNodeId;console.info(data)// alert('当前id'+data.id)// alert(data.$treeNodeId)let id =data.id*100+1const newChild = { id: id, label: data.label+'-'+id, children: [] };if (!data.children) {data.children = [];}data.children.push(newChild);// state.dataSource = [data];}const remove = (node, data) => {const parent = node.parent;const children = parent.data.children || parent.data;const index = children.findIndex(d => d.id === data.id);children.splice(index, 1);// dataSource.value = [...dataSource.value];};return {...toRefs(state),append,remove}}
}</script><style>
.custom-tree-node {flex: 1;display: flex;align-items: center;justify-content: space-between;font-size: 14px;padding-right: 8px;
}
</style>

效果如下

在这里插入图片描述

http://www.lryc.cn/news/365861.html

相关文章:

  • 小抄 20240607
  • 【GIS教程】土地利用转移矩阵
  • API接口测试工具:jmeter的安装、汉化、Jmeter桌面快捷图标和基本使用
  • 电动汽车使用时,这10个方面需要引起重视。
  • SD-WAN加速跨国服务器访问
  • Vue2指令
  • kafka-集群搭建(在docker中搭建)
  • 特征交叉系列:DCN-Mix 混合低秩交叉网络理论和实践
  • python项目(豆瓣电影)
  • 精选网络安全书单:打造数字世界的钢铁长城!
  • Ubuntu由于没有公钥,无法验证下列签名。
  • 水库安全监测系统:智慧水文动态监测系统
  • 下载centos7镜像及在VMware上安装Linux (Centos7)操作系统详细教程
  • 【全开源】考试答题系统源码(FastAdmin+ThinkPHP+Uniapp)
  • toB市场 | 我们喜欢赞助这样的展会活动
  • 【学习笔记】Git常用命令
  • 【C/C++】IO流
  • Vite5+Vue3整合Tailwindcss详细教程
  • 小程序 UI 风格魅力非凡
  • 【常用工具系列】Git 教程——从入门到大师
  • 每天坚持写java锻炼能力---第一天(6.4)
  • mysql 如何分布式部署
  • Git的概念
  • 【每日刷题】Day58
  • Python 的七个HTTP请求库对比
  • 顶顶通呼叫中心中间件-如何配置识别不同语种的ASR
  • C# SolidWorks 二次开发-显示配置
  • PXE自动装机
  • MQ之初识kafka
  • linux驱动学习(七)之混杂设备