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重置初始值不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue动态绑定组件子父组件多表单验证功能的实现代码

    vue动态绑定组件子父组件多表单验证功能的实现代码

    这篇文章主要介绍了vue动态绑定组件子父组件多表单验证功能的实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05
  • Vue 与 Vuex 的第一次接触遇到的坑

    Vue 与 Vuex 的第一次接触遇到的坑

    在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用 props 或者 $emit 等方式,如果是大型项目,很多时候都需要在子组件之间传递数据,使用vue的状态管理工具vuex很好的解决
    2018-08-08
  • Vue中子组件向父组件传值$emit、.sync的案例详解

    Vue中子组件向父组件传值$emit、.sync的案例详解

    这篇文章主要介绍了Vue中子组件向父组件传值$emit、.sync的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Element UI Upload 组件上传图片可删除、预览功能

    Element UI Upload 组件上传图片可删除、预览功能

    这篇文章主要介绍了Element UI Upload 组件 上传图片可删除、预览,设置只允许上传单张 / 多张图片的操作,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Vue页面反复刷新的常见问题及解决方案

    Vue页面反复刷新的常见问题及解决方案

    Vue.js 是一个流行的前端框架,旨在通过其响应式的数据绑定和组件化的开发模式简化开发,然而,在开发 Vue.js 应用时,页面反复刷新的问题可能会对用户体验和开发效率产生负面影响,本文将深入探讨 Vue 页面反复刷新的常见原因,并提供详细的解决方案
    2024-09-09
  • Vue不能watch数组和对象变化解决方案

    Vue不能watch数组和对象变化解决方案

    这篇文章主要为大家介绍了Vue不能watch数组和对象变化解决方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • vue引入swiper插件的使用实例

    vue引入swiper插件的使用实例

    本篇文章主要介绍了vue引入swiper插件的使用实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 基于vue2框架的机器人自动回复mini-project实例代码

    基于vue2框架的机器人自动回复mini-project实例代码

    本篇文章主要介绍了基于vue2框架的机器人自动回复mini-project实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-06-06
  • Vue Router中应用中间件的方法

    Vue Router中应用中间件的方法

    这篇文章主要介绍了Vue Router中应用中间件的方法,文中讲解非常细致,帮助大家更好的理解和学习vue router,感兴趣的朋友可以了解下
    2020-08-08
  • Vue实现全局菜单搜索框的示例

    Vue实现全局菜单搜索框的示例

    本文主要介绍了Vue实现全局菜单搜索框的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论