Element树形控件使用过程中遇到的问题及解决方法

2023-09-14 16:57:57

1.需求1点击编辑按钮,出现修改组织弹窗,且将点击时的组织名称返现在输入框中。 

思路是点击编辑按钮,取到节点点击时返回的data信息中的label进行赋值即可。

<el-tree
						style="margin-top: 20px"
						:data="organizationTreeData"
						node-key="id"
						default-expand-all
						:expand-on-click-node="false"
						v-if="
							organizationTreeData.length !== 0 && organizationTreeData !== ''
						"
						draggable
						@node-click="getOrganizationList"  //树节点点击事件
					>
						<span class="custom-tree-node" slot-scope="{ node, data }">
							<span>{{ node.label }}</span>
							<span v-if="data.type !== 1">
								<el-button
									type="text"
									icon="el-icon-plus"
									class="edit"
									@click="showOrganizationDialog"
								>
								</el-button>
								<el-tooltip
									class="item"
									effect="dark"
									content="修改组织"
									placement="top"
								>
									<el-button
										type="text"
										@click="() => showEditOrganizationDialog(data)"
										icon="el-icon-edit"
										class="edit"
									>
									</el-button>
								</el-tooltip>
								<el-tooltip
									class="item"
									effect="dark"
									content="禁用组织"
									placement="top"
								>
									<el-popconfirm
										title="您确定要禁用组织吗?"
										@confirm="deactive"
									>
										<el-button
											slot="reference"
											type="text"
											icon="el-icon-success"
											v-if="node.data.isEnable"
											style="margin-left: 10px; color: green"
											@click="unEnableOrganization()"
											class="restart"
										></el-button>
									</el-popconfirm>
								</el-tooltip>
								<el-tooltip
									class="item"
									effect="dark"
									content="启用组织"
									placement="top"
								>
									<el-popconfirm title="您确定要启用组织吗" @confirm="active">
										<el-button
											slot="reference"
											:type="type"
											icon="el-icon-error"
											v-if="!node.data.isEnable"
											style="margin-left: 10px; color: red"
											@click="enableOrganization()"
										></el-button>
									</el-popconfirm>
								</el-tooltip>
							</span>
						</span>
					</el-tree>
showEditOrganizationDialog() {
			this.editOrganizationDialogVisible = true
				this.organizationForm.organizationName = this.data.label
		},
getOrganizationList(data, node) {
			console.log('data', data)
			this.data = data  //获取到节点信息放到当前的data中		
		}

以为这样就可以了,刷新页面发现点第一次的时候输入框并不能回显出组织名称,换一个点击时回显的是上一个点击的组织名称。分析了一下肯定是data赋值没赋上,看一下控制台的输出

 

 确实没有赋值成功,然后看了一下这个输出顺序,以为是JavaScript按顺序执行的原因,调换了两个方法的位置,发现还是这个问题。我的解决办法就是,既然输出顺序一直都是showEditOrganizationDialog中的先输出,那就给它延迟,让它延迟输出这样赋值就能赋上了。修改后的代码

showEditOrganizationDialog() {
			this.editOrganizationDialogVisible = true
			setTimeout(() => {
				this.organizationForm.organizationName = this.data.label
				console.log(this.organizationForm.organizationName)
			}, 0)
		},

 

2.需求2点击最后的按钮进行组织的禁用启用。 

首先是根据node节点中isEnable字段判断是启用按钮还是禁用按钮,然后在进行切换。 很简单就是在点击确定的时候修改isEnable字段的值就可以。但就是这样我还是遇到了问题,就是点击第一次进行更改没问题,但是第二次的时候就会报错。

active() {
			this.data.isEnable = !this.data.isEnable
		},
deactive() {
			this.data.isEnable = !this.data.isEnable
		},

报错情况如下:

这个实例上没有这个方法,我找了一会明明有这个方法啊,为什么会报错呢。然后仔细看了一下代码,我的同事在用条件渲染的时候用的是v-if,当不满足的时候就会删除dom元素,所以第二次的时候根本没有这个dom元素,也就不存在这个方法了。修改方法不用v-if进行条件渲染,使用v-show进行条件渲染即可解决。

 

解决方法:

 

更多推荐

pytorch学习2

分类问题手写数字数据集其中,每个数字图片大小是28x28,矩阵中每个元素的大小为[0,1]区间的灰度值,将二维矩阵拉平(flat)为一维784,数据量不变,这样能忽略上下位置相关性,甚至左右位置相关性也可忽略,再插入一个维度变为[1,784]线性模型能解决吗一个简单的线性模型为:y=w*x+b但对于手写数字来说,用一个

城中村现代化治理,筑牢基层安全底座

7月21日,李强主持召开常务会议指出,在超大特大城市积极稳步实施城中村改造是改善民生、扩大内需、推动城市高质量发展的一项重要举措。基层(村社)治理是作为社会治理的一个基本单元,是城市治理的一个最后一公里,社会治理的重点在基层,难点也在基层。如何深化数字技术融合创新,推进共建共治共享基层治理全面提速,赋能区域数字经济高质

Linux安装包 | Git使用 | NFC搭建

dpgt使用当谈到基于Debian的操作系统中的软件包管理工具时,dpkg是一个重要的工具。它是Debian系统中用于安装、升级、配置和卸载软件包的命令行工具。以下是对dpkg的详细介绍:软件包管理:dpkg可以管理系统中的软件包。它可以安装单个或多个软件包,并处理软件包之间的依赖关系。通过dpkg-i命令,可以安装软

固定资产管理系统都有哪些功能呢

固定资产管理系统作为企业资产管理的重要工具,具有提高效率、降低成本、保证资产合理使用的多种功能。以下是一些典型的功能:资产登记和信息管理:系统可以自动记录公司的固定信息,包括资产名称、型号、购买日期、原始价值、折旧方法、折旧年限等。同时,系统还支持自动更新和查看资产信息。资产申请和偿还:员工可以通过平台申请或偿还资产,

浅谈KNX总线智能照明控制系统在北京南站房中的应用

安科瑞华楠摘要:本文简要介绍了i-busEIB/KNX智能建筑控制系统的基本原理及在北京南站房中的成功应用。阐述了这一系统强大的系统功能、灵活的控制方式节能效果。关键词:i-bus智能建筑控制;控制系统;节能1、工程概况北京新南站位于南护城河以南,马家堡西路以东,南二环右安门外东庄公园内,距离老南站0.5km。站内总建

[JAVAee]SpringBoot日志文件

日志的作用日志可以帮助我们发现程序的问题并进行定位.日志还可以记录用户的登录信息,分析用户的意图.日志能记录程序执行的时间,记录数据.为日后的程序优化提供数据支持.SpringBoot中的日志在SpringBoot中,内置的日志的框架(SLF4J+logback).框架说明slf4j是日志的门面,而logback是日志

Linux命令历史记录管理:使用history命令提高工作效率

文章目录引言1.1关于history命令1.2history命令的作用和用途基本用法2.1查看历史命令列表2.2执行历史命令2.3使用历史命令编号历史命令记录和保存3.1历史命令的存储位置3.2修改历史命令记录数量3.3清除历史命令记录搜索历史命令4.1使用关键字搜索4.2按日期和时间搜索4.3结合其他命令进行高级搜索

众佰诚:抖音开网店选品要怎么做

在移动互联网时代,抖音已经成为了一个风靡全球的社交媒体平台,吸引了数以亿计的用户。因此,许多人看到了在抖音上开设网店的商机,但要成功经营一家抖音网店,选品是至关重要的一环。下面将介绍一些关于如何在抖音上选择合适的商品的方法。确定目标受众:在开设抖音网店之前,首先要明确自己的目标受众是谁。了解你的受众的年龄、性别、兴趣爱

MLAgents (1) 球移动到指定立方体目标

1、ML-Agents库介绍ML-Agents库,训练用于2D、3D、VR/AR游戏的智能agent,经过训练的agent可用于多种目的,包括:控制NPC行为(采用各种设置,例如多个agent和对抗)、对游戏内部版本进行自动化测试、以及评估不同游戏设计决策的预发布版本2、Unity中创建立方体、球和地面球——玩家移动和

【iOS】ViewController的生命周期

文章目录前言一、UIViewController生命周期有关函数二、执行顺序注意点loadview:前言在iOS开发中UIViewController扮演者非常重要的角色,它是视图view和数据model的桥梁,通过UIViewController的管理有条不紊的将数据展示在视图上。作为UIKit中最基本的一个类,一般

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板,在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存,以便不时之需。数据可视化大屏制作软件:奥威BI系统数据可视化报表模板板块:模板秀主要操作:点击、拖拉拽适用人群以及场景:所有具体操作步骤:1、登录奥威BI系统后,通过点击、拖曳的方式上传数据源(该过程

热文推荐