美文网首页
elementUI中dialog表单重置

elementUI中dialog表单重置

作者: 时间走了光 | 来源:发表于2019-08-02 14:56 被阅读0次

背景

当前开发的项目需要跳转的比较多,故而做了弹出框表单,开发过程中发现新增、编辑时,elementUI的表单重置方法不能重置表单,当第一次打开的为新增,编辑时可重置,当第一次打开为编辑时,再打开新增,表单内容为第一次打开编辑的内容,未将表单重置为我们期望的初始值。

解决思路

1、排查resetFields方法是否执行;
2、查看表单重置方法是什么时候执行的;
3、弄清楚表单重置的是什么时候的值;

步骤

1、查阅elementUI的文档发现,表单重置的为data中设置的初始值;
2、那我们就再编辑回填数据之前调用resetFields不就完美解决了嘛(机智如我)!
3、编辑时,直接调用编辑中的init方法,并在其中添加resetFields重置方法,发现第一次加载的时候报错,
说明再弹框显示时,表单实例还没加载完,不能调用resetFields方法
4、既然还没有实例肯定不能用resetFields这个方法了, 那怎么办呢,我想到了setTimeout方法,将resetFields方法和表单回填的方法放到setTimeout中,果然能够重置了,如下:

           setTimeout(() => {
                  // 重置表单
                this.$refs.formNameAdd.resetFields();

                    // 给表单进行赋值
                    for (let h in this.flowAddForm) {
                        if (formList.hasOwnProperty(h)) {
                            this.flowAddForm[h] = formList[h];
                        }
                    }
                }, 0);

5、当使用dialog时候,调用dialog中的方法也同样要放到setTimeout之中,不然也会报未定义的错误,如下:

// 调用弹出框中的init()方法
setTimeout(() => {
       this.$refs.flowAddRef.init();
 }, 0)

相关文章

网友评论

      本文标题:elementUI中dialog表单重置

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