vue使用深拷贝进行表单清空

最近发现this.$refs[form].resetFields()这个方法并不能将表单清空,它只是把表单重置到初始值。

我在实际项目中遇到的情况是:
1.进入页面首先进行新增操作(表单初始是空值),则重置功能正常

2.进入页面首先进行修改操作(表单默认回显要修改的数据),则在之后的操作执行this.$refs[form].resetFields(),表单的内容都是进入页面时回显的数据

解决办法:

1.在data里定义的表单初始数据是

addForm: {
        centerName: '',
        centerCode: ''
      },

2.在created深拷贝一份表单初始数据

created() {
    this.defaultAddForm = JSON.parse(JSON.stringify(this.addForm))
}

3.在需要重置的地方将defaultAddForm的值赋给addForm

// 关闭对话框
cancel: function(form) {
    this.addForm = JSON.parse(JSON.stringify(this.defaultAddForm))
    this.$nextTick(() => { this.$refs[form].clearValidate() })
},

4.使用深拷贝的原因时防止addForm内容的修改影响到defaultAddForm

5.此方法还适用于有默认值得重置、多字段的重置等,如查询栏的重置

赶快动手试试吧~ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值