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

 更新时间:2023年03月23日 11:02:19   作者:张大牛Zz  
resetFields 对整个表单进行重置,将所有字段值重置为空并移除校验结果,下面这篇文章主要给大家介绍了关于vue中resetFields重置初始值不生效的原因的相关资料,需要的朋友可以参考下

问题

最近在做项目的时候, 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! 完成

c607595b796bc6fbce3be172ec89530b.png

引申

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

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

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

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

加个补充

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

总结

到此这篇关于vue中resetFields重置初始值不生效的原因的文章就介绍到这了,更多相关resetFields重置初始值不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Ant Design Vue table组件如何自定义分页器

    Ant Design Vue table组件如何自定义分页器

    这篇文章主要介绍了Ant Design Vue table组件如何自定义分页器问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue如何使用ElementUI对表单元素进行自定义校验及踩坑

    Vue如何使用ElementUI对表单元素进行自定义校验及踩坑

    有一些验证不是通过input select这样的受控组件来触发验证条件的 ,可以通过自定义验证的方法来触发,下面这篇文章主要给大家介绍了关于Vue如何使用ElementUI对表单元素进行自定义校验及踩坑的相关资料,需要的朋友可以参考下
    2023-02-02
  • 详解vue中v-for和v-if一起使用的替代方法template

    详解vue中v-for和v-if一起使用的替代方法template

    这篇文章主要介绍了vue中v-for和v-if一起使用的替代方法template,使用的版本是vue 2.9.6和element-ui: 2.15.6,通过实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2022-05-05
  • vue使用stompjs实现mqtt消息推送通知

    vue使用stompjs实现mqtt消息推送通知

    这篇文章主要为大家详细介绍了vue中使用stompjs实现mqtt消息推送通知,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Electron vue的使用教程图文详解

    Electron vue的使用教程图文详解

    Electron相当于一个浏览器的外壳,可以把网页程序嵌入到壳里面,可以运行在桌面上的一个程序,可以把网页打包成一个在桌面运行的程序。这篇文章主要介绍了electron-vue多显示屏下将新窗口投放是其他屏幕 ,需要的朋友可以参考下
    2019-07-07
  • vue: WebStorm设置快速编译运行的方法

    vue: WebStorm设置快速编译运行的方法

    今天小编就为大家分享一篇vue: WebStorm设置快速编译运行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Vue IP地址输入框实例代码

    Vue IP地址输入框实例代码

    本文通过实例代码给大家介绍Vue IP地址输入框实现,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • 使用Vue.js中的过滤器实现幂方求值的方法

    使用Vue.js中的过滤器实现幂方求值的方法

    这篇文章主要介绍了使用Vue.js中的过滤器实现幂方求值的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • vant中的toast轻提示实现代码

    vant中的toast轻提示实现代码

    这篇文章主要介绍了vant中的toast轻提示实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue实现微信浏览器左上角返回按钮拦截功能

    vue实现微信浏览器左上角返回按钮拦截功能

    这篇文章主要介绍了vue实现微信浏览器左上角返回按钮拦截功能,本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01

最新评论