解决Vue中Element resetFields()重置表单不生效的问题(含Cannot read property ‘resetFields‘ of undefined问题解决)

news/2024/7/10 0:54:31 标签: 前端, vue, elementui

问题背景:

在已经遵照Element官网给出的 resetFields 使用方法情况下,resetFields 方法仍无法生效

首先先来梳理一下Element官方文档中给出的 resetFields 方法的使用条件:

 

也就是说,想要使用 resetFields 需要满足:

  1. 给el-form-item添加 prop 属性
  2. 为了重置表单需要添加 ref 属性,ref属性需要与$ref['form']中名称一致

原始代码:

 

 按如上代码,我既添加了ref又添加了prop而且我的对话框模块的代码并没有进行复用,如果 resetFields() 方法生效后应该会将表单中的值重置为图三所设置的初始值,但是结果并没有重置...(我emo了....)

解决方法:

于是我思来想去决定把这个监听事件换个地方绑定

我将这个监听事件绑定到了准备开始弹出弹框的地方

虽然表单可以实现重置了,不过浏览器弹出了以下错误:

Cannot read property ‘resetFields‘ of undefined

 分析(一定要接着看更新的方法!):

undefined 表示一个变量未定义或未赋值的初始状态值,我认为弹出这个错误大概是因为第一次点击弹框的时候弹框内本来就是初始值,并不需要 reset,所以可以在使用 resetFields 之前增加一个判断条件,代码如下:

 最后,果然不报错了!!而且重置表单也可以正常生效了!!!

所以如果有和我情况一致的uu也可以试试我这种方法噢


更新

上次分析的 resetFields() 方法失效的原因不正确,真正让它 undefined 原因应该是在 mounted 加载完后,这个隐藏的对话框并没有被渲染到DOM树中,所以点击它的时候 $refs 获取不到dom节点,导致结果undefined,破案了破案了

解决方法:

1.依旧可以像上面一样换个地方绑定并添加一个判断条件,

2.也可以使用 nextTick() 方法:

简单理解 nextTick() 就是 当数据更新了,在dom中渲染后,自动执行该函数


http://www.niftyadmin.cn/n/854118.html

相关文章

java 进程 递归kill_Shell脚本实现查杀子进程、僵尸进程

#!/bin/sh# 递归找到导致进程僵死的最底层子进程并杀除.ParentProcessID$1;if [ "x${ParentProcessID}" "x" ] ; thenecho "Please Supply the top Parent Process ID to be killed!"echo "Usage:sh $0 PID [-v]"echo "PID The …

java 内置中介模式_java設計模式之中介者模式

一、終結者模式簡介中介者模式(Mediator Pattern):定義一個中介對象來封裝系列對象之間的交互。中介者使各個對象不需要顯示地相互引用,從而使其耦合性松散,而且可以獨立地改變他們之間的交互。中介者模式屬於行為型模式。通過定義我們可以看…

解决Element-UI的Cascader级联选择器的选项框位置问题

在使用Cascader级联选择器的时候出现如图所示的选项框超出浏览器显示区域的问题,可以使用以下方法解决 解决方法: 在全局样式表 #global.css 中书写以下样式: .el-cascader-panel {height: 300px; } 注意:如果直接在当前vue文件…

centos 用命令创建LVM逻辑卷

为什么80%的码农都做不了架构师?>>> LVM基本术语 LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。 物理存储介质(The physi…

C++笔记 第三课 进化后的const分析---狄泰学院

如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。 学习C编译环境:Linux 第三课 进化后的const分析 1.C语言中的const const修饰的变量是只读的,本质还是变量 const修饰的局部变量在栈上分配空间…

算法训练 和为t java_和为T

https://blog.csdn.net/Y734493585/article/details/88387342,2.https://blog.csdn.net/liuchuo/article/details/56676828)在第一个博客里我终于明白了dfs的过程,这回是彻底清楚了,然后在二里面,老老实实的把代码走了一遍(写了快…

关于浮动(float)的原理和特性及如何清除浮动

浮动(float): float 属性用于创建浮动框,可以向左或右移动直至包含块或另一浮动框的边缘。 语法: 选择器 { float: 属性值; } 属性值描述none元素不浮动(默认值)left元素向左浮动right元素向右浮动1.浮动的工作原理: …

html input readonly 和 disable的区别

为什么80%的码农都做不了架构师?>>> Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容。但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / password)和textarea有效,而disabled对于…