el-动态表单的校验不触发/只触发了部分项

news2024/11/24 9:10:19

参考:

  1. 深入了解Element Form表单动态验证问题 转载
  2. vue elementUI组件表单动态验证失效的问题与解决办法

在别人的代码上开发新功能时,发现动态表单的校验功能突然出现问题:

重构前,只有两步,通过type来判断当前显示内容
<el-form>
	<div v-if="type">  第一步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="type == false"> 第二步
		<div>
			<el-form-item></el-form-item>
			...
		</div>
		...
	<div>
</el-form>

重构后,有4步
<el-form>
	<div v-if="step === 1">  第一步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 2"> 第二步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 3"> 第3步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 4"> 第4步
		<el-form-item></el-form-item>
		...
	<div>
</el-form>

在测试时发现,第一步校验没有问题,一旦进入第二步,就只触发了部分一个或者两个校验。
通过对比重构前的代码,发现和之前的一样,在el-form-item外套一层div就可以了

<el-form>
	<div v-if="step === 1">  第一步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 2"> 第二步
		<div>
			<el-form-item></el-form-item>
			...
		</div>
	<div>

想知道发生了什么导致这种情况,于是去看el-form的源码,发现校验的触发数量,与其属性fields有关系,如图
左边元素有6个, 而右边fields只有1个
在这里插入图片描述
所以在触发校验时,只有一个,如下
在这里插入图片描述

那么现在的问题就是:fields的数据是如何变化的?在源码中找到如下位置,根据子组件的创建销毁来修改fields
el-form:

在这里插入图片描述

el-form-item:

在这里插入图片描述

到了这里,多半就可以确定的是元素更新的问题了,在el-form-item外套一层div,进入第二步后元素布局就与第一步不同,从而刷新了所有元素。进而fields中的数据也就齐全了。

后面我又试了下,如果给第一步的el-form-item套div,第二步不套也可以解决。
但是,如果同时套上div,那么相对来说el-form中el-form-item的结构就没有发生变化,就产生了同样的问题,因此套div的方式并不可取。

为了给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key

现在的方法是:给每个v-if设置key

<el-form>
	<div v-if="step === 1" key="1">  第一步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 2" key="2"> 第二步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 3" key="3"> 第3步
		<el-form-item></el-form-item>
		...
	<div>
	<div v-if="step === 4" key="4"> 第4步
		<el-form-item></el-form-item>
		...
	<div>
</el-form>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2211241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium.js(SuperMap iClient3D for Cesium)进行三维场景展示和图层动画

1&#xff09;&#xff1a;参考API文档&#xff1a;SuperMap iClient3D for Cesium 开发指南 2&#xff09;&#xff1a;官网示例&#xff1a;support.supermap.com.cn:8090/webgl/Cesium/examples/webgl/examples.html#layer 3&#xff09;&#xff1a;SuperMap iServer&…

自定义类型 - 结构体

2024 - 10 - 13 - 笔记 - 26 作者(Author): 郑龙浩 / 仟濹(CSDN账号名) 自定义类型 - 结构体 平时用的数组是一组相同类型的数据&#xff0c;如果想表示一组不同类型的数据&#xff0c;那么就可以结构体了。 ① 结构体的声明&#xff08;重要&#xff09; 自己起的名字&…

[论文阅读]: Detecting Copyrighted Content in Language Models Training Data

发布链接&#xff1a;http://arxiv.org/abs/2402.09910 核心目标&#xff1a;检测语言模型的训练过程中是否使用了受版权保护的内容 基于假设&#xff1a;语言模型有可能识别训练文本中的逐字节选 工作&#xff1a;提出了 DE-COP&#xff0c;一种确定训练中是否包含受版权保…

如何在Android平板上使用谷歌浏览器进行网页缩放

在使用Android平板时&#xff0c;我们经常会浏览各种网页&#xff0c;但有时网页内容可能无法适应屏幕大小&#xff0c;这时就需要用到网页缩放功能。本文将为您详细介绍如何在Android平 板上的谷歌浏览器中进行网页缩放&#xff0c;帮助您更好地浏览网页。&#xff08;本文由h…

Cursor 平替项目 bolt.new

Cursor 是一个全新的编程工具&#xff0c;旨在帮助开发者更高效地写代码。它不仅能提升编程速度&#xff0c;还能让代码更干净、更智能。无论你是编程新手还是经验丰富的开发者&#xff0c;Cursor AI都能为你提供智能辅助&#xff0c;显著提高编程效率。 但是目前 Cursor 免费…

QT开发--文件的读写操作

第十三章 文件的读写操作 Qt提供两种读写纯文本文件的方法&#xff1a; 1、直接使用 QFile 类的IO功能&#xff1b; 2、结合 QFile 和 QTextStream&#xff0c;利用流(Stream)进行操作。 13.1 文件读操作 13.1.1 使用QFile类 Qt封装了QFile类&#xff0c;方便我们对文件进行操…

物联网直播技术揭秘:如何保证超高可用性?

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello,大家好!我是小米,一个29岁超爱分享技术的码农。今天跟大家聊一聊物联网时代下直播高可用方案的那些事儿。 随着物联网的快速发展,直播技术已…

针对考研的C语言学习(循环队列-链表版本以及2019循环队列大题)

题目 【注】此版本严格按照数字版循环队列的写法&#xff0c;rear所代表的永远是空数据 图解 1.初始化部分和插入部分 2出队 3.分部代码解析 初始化 void init_cir_link_que(CirLinkQue& q) {q.rear q.front (LinkList)malloc(sizeof(LNode));q.front->next NULL…

【宝可梦】游戏

pokemmo https://pokemmo.com/zh/ 写在最后&#xff1a;若本文章对您有帮助&#xff0c;请点个赞啦 ٩(๑•̀ω•́๑)۶

LeetCode讲解篇之1749. 任意子数组和的绝对值的最大值

文章目录 题目描述题解思路题解代码题解链接 题目描述 题解思路 这个我只需要求子数组和的最小值相反数和子数组和的最大值&#xff0c;本题答案为二者的最大值 设数组maxDp中第i号元素表示以nums[i]为结尾的子数组和的最大值 设数组minDp中第i号元素表示以nums[i]为结尾的子…

机器学习课程学习周报十六

机器学习课程学习周报十六 文章目录 机器学习课程学习周报十六摘要Abstract一、机器学习部分1. 再探马尔可夫链1.1 离散状态马尔可夫链1.1.1 转移概率矩阵和状态分布1.1.2 平稳分布 1.2 连续状态马尔可夫链1.3 马尔可夫链的性质 2. 马尔可夫蒙特卡罗法2.1 基本想法2.2 基本步骤…

77.【C语言】文件操作(3)

目录 6.文件的顺序读写 1.几个顺序读写函数 1.fgetc函数 代码示例 代码改进 2.fputc函数 3.fputs函数 如果需要换行,应该写入换行符(\n) 4.fgets函数 1.读取单行字符串 2.读取多行字符串 6.文件的顺序读写 1.几个顺序读写函数 分组:(fgetc,fputc),(fgets,fputs),(f…

服务器数据恢复—Raid5阵列硬盘磁头损坏导致掉线的数据恢复案例

服务器数据恢复环境&#xff1a; 一台某品牌存储设备上有一组由10块硬盘&#xff08;9块数据盘1块热备盘&#xff09;组建的raid5阵列&#xff0c;上层部署vmware exsi虚拟化平台。 服务器故障&#xff1a; raid5阵列中两块硬盘对应的指示灯亮黄灯掉线。硬盘序列号无法读取&am…

【动手学深度学习】6.3 填充与步幅(个人向笔记)

卷积的输出形状取决于输入形状和卷积核的形状在应用连续的卷积后&#xff0c;我们最终得到的输出大小远小于输入大小&#xff0c;这是由于卷积核的宽度和高度通常大于1导致的比如&#xff0c;一个 240 240 240240 240240像素的图像&#xff0c;经过10层 5 5 55 55的卷积后&am…

D3.js(五):实现组织架构图

实现组织架构图 效果初始化组织机构容器并实现缩放平移功能效果源码 渲染节点效果源码 渲染连线效果源码 完整源码 效果 初始化组织机构容器并实现缩放平移功能 效果 源码 import {useEffect} from react; import TreeData from ./json/tree-data.json;interface ITreeConfig…

电子电气架构---汽车OEM敏捷式集成方案简介

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…

数据在内存中的存储【下】

三.浮点数在内存中的存储 我们常见的浮点数&#xff1a;3.14159&#xff0c;1E10等&#xff0c;浮点数家族包括&#xff1a;float&#xff0c;double, long double类型。浮点数表示的范围&#xff1a;float.h中定义。之前我们说过浮点数在内存中无法精确保存&#xff0c;那为什…

OKHTTP 如何处理请求超时和重连机制

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。 &#x1f60a; 座右铭&#xff1a;不…

动态规划练习一

一、动态规划基本思路 1、状态表示&#xff1a;dp[i]的含义是什么 在一维数组中一般是“以 i 位置为结尾 / 起点....” 2、状态转移方程&#xff1a;dp[i]等于什么 一般是要根据最近的一步分情况进行讨论得出。 3、初始化dp表边界情况&#xff1a;保证在循环填表时不越界 …

80.【C语言】数据结构之时间复杂度

目录 1.数据结构的定义 2.算法的定义 3.算法的效率 1.衡量一个算法的好坏的方法 例题:计算以下代码的循环次数 2.大O的渐进表示法 练习1:求下列代码的时间复杂度 练习2:求下列代码的时间复杂度 练习3:求下列代码的时间复杂度 练习4:求下列代码的时间复杂度 4.总结:计…