el-form的resetFields方法失效问题

resetFields()失效

背景

  1. el-form在el-dialog内,用于绑定外部报表的查询条件。
  2. prop和model已正确填写。
  3. el-dialog使用v-if进行控制。
  4. 第一次打开dialog选择查询条件后可以正常重置,但是关闭弹窗后进行重置无法清空搜索条件。

原因

**resetFields方法是将表单重置为form组件dom刚渲染时的初始值,**由于dialog内form组件是和data内queryParams进行的双向数据绑定,所以第一次打开form组件的初始值是空值,可以正常重置。给form组件填充值后关闭dialog然后重新打开(dom已重新渲染),form组件重新渲染时初始值不为空,故无法重置为空。

解决方案

笨办法,重置方法内手动将queryParams对象属性置空(有大佬有更好方法请赐教)。

js 复制代码
resetQuery() {
    this.queryParams = {
        pageNum: 1,
        pageSize: 200,
        productionLine: "",
        outboundTime: [],
        materialReceiverGroup: "",
        steelRollNumber: "",
    };
    this.getList();
},
问题延伸

**打开dialog时手动赋值场景:**如果想要将值重置为空,需要将赋值操作放在this.$nextTick方法内(原理使form初始化值为空),如下。

js 复制代码
openQuery() {
    this.searchOpen = true;
    this.$nextTick(() => {
        this.queryParams.steelRollNumber = "demo";
    });
},

神奇想法,如何有业务场景需要给dialog模态框内form组件一个默认值,且重置该组件不希望置空而是置为默认值,可以对与form组件双向绑定的对象属性赋初始值,使form初始化时初始值不为空。

法一:data函数内对象定义直接给初始值。

法二:打开dialog方法内赋值操作不放在his.$nextTick方法内。

相关推荐
我命由我123451 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
Momo__2 小时前
你写的 import 重试,从来没生效过
前端·javascript·typescript
ruanno_top2 小时前
1 万行表格只渲染 18 行:虚拟滚动让我放弃了三个功能
vue.js
仨孩子的爹2 小时前
套打总偏两毫米:预印刷单据的校准方法和三个误区
vue.js
徐小夕2 小时前
JitKnow知识库4.8发布:本体+知识图谱检索引擎,让AI回答不再“一本正经地胡说八道”
前端·vue.js·github
tryCbest3 小时前
Vue3——第 11 篇:组合式 API(上)——setup 与响应式 API 深度解析
前端·javascript·vue.js
tryCbest4 小时前
Vue3——第 13 篇:计算属性与侦听器——computed 与 watch 的进化
前端·javascript·vue.js
用户117953654784 小时前
企业团队编程软件怎么选:AI编程工具的协作与落地能力对比
javascript
闲来没事抠鼻屎4 小时前
标签打印 8 个尺寸公式:小票、价签、吊牌、面单通用
vue.js
believed_breadfruit4 小时前
我开源了一个HTML 分页导出工具,解决了复杂页面的内容截断、跨页错乱和长文档白屏问题
前端·javascript·github