关于Element-UI中el-form的resetFields()的小坑点

博主用vue和element-ui组件在写前端时,用到了表单部分校验的操作
但是在使用resetFields()时,会有一些不可避免的小坑点,特此记录学习笔记

1.

完成数据的回显

如下图的红圈中,model肯定需要(用于回显数据),rules的绑定其实和需要校验的表单项有关(不校验的话其实用不到,这里就不再贴图),再者prop则是必须的,因为resetFields()这个方法就是根据该属性来的(官网的文档中也有说明)
在这里插入图片描述
实现流程大致就是,通过template标签的slot-scope作用域来传入一行的数据到方法中,再用该行的数据赋值给orderForm这个变量中,dialog中的form表单回显该行数据
在这里插入图片描述
在这里插入图片描述
这样就可以实现数据的回显
如图(第一张图的代码外嵌套了一层el-dialog对话框)
在这里插入图片描述

2.

正常一般的处理重置表单项数据以及校验的方式,都是写一个方法来绑定dialog的关闭事件,当关闭事件触发时,就可以直接通过resetFields()方法来重置表单项.
如图
在这里插入图片描述
在这里插入图片描述

**但是!!!**如果只是使用上述方法来重置的话,在每次关闭对话框时,都会出现初始值一闪而过,因为表单的resetFields()这个方法就是通过保存数据的初始值,在关闭时重置表单来实现的,因此这样对用户的体验不好.
我们可以改用下面的方式
在这里插入图片描述
在表单关闭时,清空该行绑定变量orderForm的所有数据,再重置所有的表单项,就可以解决上述问题.

到此为止,算是解决了一个小问题

最大的坑点

如果在修改成功的请求发出,页面重新获取到新数据渲染之后(但是没有刷新页面),再次点击修改的那一行数据.使之回显,然后再关闭对话框,就会发现.该行数据居然再次变回修改前数据
如下图
在这里插入图片描述
在这里插入图片描述
再点击编辑按钮,并且不做任何处理的情况下关闭对话框
在这里插入图片描述

数据又变回了表单的初始值.

(可能和引用相关??)

解决方案:

创建一个新的对象,用来存放该行回显使用的数据,就可以解决上述问题
在这里插入图片描述

目前博主只找到创建新的对象方式来解决上述的问题,如果大佬有更好的解决方案,可以在评论区下方留言交流
转载请写明出处

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值