美文网首页
vue中resetFields()不生效

vue中resetFields()不生效

作者: 青争小台 | 来源:发表于2021-03-23 15:06 被阅读0次

    this.$refs.frmAdd.resetFields();这句在使用中有些时候不会有啥问题,但有时候就会出问题,而且特别难缠,我原来这么使用就没问题啊,怎么这里就会有问题,查找各种资料总结得出:

    第一种情况:放在弹框刚准备弹出的时候


    image.png

    第二种情况:放在弹框关闭方法@close中

    发现上次报红框的地方仍然在,并未重置

    最终解决方案:

    this.KaTeX parse error: Expected "}", got "EOF" at end of input: … this.refs.frmAdd.resetFields(); });
    

    可以放在准备开始弹出弹框时的方法中

    补充知识:vue-element-ui 中 form resetFields并没有清空表单

    问题背景

    vue-element-ui 中 form中有个清空表单的方法,即假如给表单一个ref="form", 则清空表单的方法为this.$refs["form"].resetFields()

    可当我在dialog组件中用这个方法的时候,这就出现问题了,居然清空不了~~~~~

    问题所在

    问题的本质是因为你编辑时,第一次打开dialog的时候给表单绑定的form赋值了,这时候这个form的初始值就变成了你所赋值的值,所以resetFields的时候,会将form对应的每个值重置到初始值,这时候的初始值就是你编辑时赋值的那个值, 而不是在data里声明的初始值,

    如表单绑定的值为:

    form: {
     age: 0,
     name: ""
    }
    

    但在你打开dialog编辑的时候,你又对它进行赋值,如

    this.form = {
     age:23,
     name:"lala"
    }
    

    这个时候form表单会默认这个新赋的值为初始值

    解决

    解决方式是,等dialog已经初始化之后再给form赋值,也就是

    this.$nextTick(() => { // 这里开始赋值 this.form.xxx = xxx; })
    

    以上这篇浅谈vue中resetFields()使用注意事项就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。

    原文链接:https://blog.csdn.net/weixin_41796860/article/details/85162723
    https://www.yht7.com/news/112324

    相关文章

      网友评论

          本文标题:vue中resetFields()不生效

          本文链接:https://www.haomeiwen.com/subject/vywxhltx.html