vue中resetFields重置初始值不生效的原因详解

作者:张大牛Zz 时间:2024-05-29 22:29:12 

问题

最近在做项目的时候, dialog组件回调close里面 一般我都会加个resetFields 重置初始值和校验

其他地方都没问题, 在table组件里面出问题了, 后来经过监听vue tools, 查看到resetFields后, formData没变, 最后也找到原因了.

解决

1、用 dialog【新增】、【修改】数据

2、先点击了【修改】,弹出弹窗,此时弹窗的form表单已经赋值

3、再点击新增按钮,此时调用resetFields()方法是没有办法使form清空的

如果直接只写this.$refs.formRef.resetFields()

因为编辑操作是有数据回显的, 数据回显是在mounted阶段渲染上去的,

而 resetFields是将form表单重置到初始值,而这个初始值是form表单mounted后的值

结果就导致只能清空校验, 不能重置表单到我们想要的初始值

所以直接this.$data.roleFrom=JSON.parse(JSON.stringify(this.$options.data().roleFrom))

深拷贝roleForm yeah! 完成

vue中resetFields重置初始值不生效的原因详解

引申

 我的其他页面为什么没问题呢?  我后来去看了其他组件的dialog为什么数据回显没问题, 因为其他组件我用到了watch 根据id变化执行渲染, 每次dialog close回调我都会主动把id清空为空字符串, 正好那个接口id如果为空字符串也会发请求, 获取的数据正好和回显的值不对应, 所以就为空了。本质上是重新发了请求,但正好因为数据不对应不显示,造成了添加操作时数据为空的正确表象。

 总的来说还是不严谨,  我这里要修改代码,watch这里加个if的意思是每次关闭会重置,但是打开不用重置。

①  子组件 watch if newVal===" " 上面的表单重置方法(这里空字符串我特意加了个空格看的清楚点, 实际重置不用加空格)

②  父组件dialog close回调里面添加一条 isEdit=false  防止子组件watch id变化为空字符时重复发ajax

vue中resetFields重置初始值不生效的原因详解

vue中resetFields重置初始值不生效的原因详解

加个补充

还有一点就是如果每次获取都是用ajax去获取数据, 那获取的也是新地址对象, 只是因为我部分数据用了本地已存在的引用数据, 所以才会有这种情况, 所以大家用引用数据一定要注意, 如果发现有关联关系, 且影响业务, 都深拷贝一份吧

来源:https://blog.csdn.net/qq_59650449/article/details/128493928

标签:resetfields,重置初始值,不生效
0
投稿

猜你喜欢

  • python批量修改xml属性的实现方式

    2022-10-03 12:34:58
  • 基于python调用psutil模块过程解析

    2022-04-09 18:22:56
  • Python实现的大数据分析操作系统日志功能示例

    2022-07-31 00:40:34
  • 详解appium+python 启动一个app步骤

    2021-12-19 02:44:55
  • python线程join方法原理解析

    2021-02-02 04:49:01
  • JS中的算法与数据结构之集合(Set)实例详解

    2024-04-16 09:28:34
  • 在CMD中操作mysql数据库出现中文乱码解决方案

    2024-01-19 10:38:03
  • VS2019+python3.7+opencv4.1+tensorflow1.13配置详解

    2023-06-19 04:56:38
  • 教你用Python实现简易版学生信息管理系统(含源码)

    2022-07-21 23:40:00
  • Python实现ATM系统

    2021-10-17 05:20:46
  • 有关缓存 Cache 的随想

    2008-06-09 14:25:00
  • 107条javascript(js)常用小技巧

    2007-10-30 12:40:00
  • MySQL基础教程之事务异常情况

    2024-01-15 06:12:20
  • 100行Python代码实现每天不同时间段定时给女友发消息

    2023-07-11 20:32:56
  • go语言开发中如何优雅得关闭协程方法

    2024-02-15 00:12:55
  • python Copula 实现绘制散点模型

    2023-07-24 14:02:37
  • php引用地址改变变量值的问题

    2023-11-14 12:41:31
  • 解决Python中字符串和数字拼接报错的方法

    2023-06-11 23:12:37
  • Silverlight VS Flash,谁更强?

    2008-11-07 11:04:00
  • MVC4制作网站教程第二章 用户注册2.1

    2023-06-28 12:33:36
  • asp之家 网络编程 m.aspxhome.com