el-form的resetFields方法失效问题

resetFields()失效

背景

  1. el-formel-dialog内,用于绑定外部报表的查询条件。
  2. propmodel已正确填写。
  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方法内。

相关推荐
尾善爱看海9 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
weixin_BYSJ19879 小时前
【计算机毕设】基于SpringBoot与Vue的文物保护档案管理系统08621
vue.js·spring boot·spring cloud·微服务·架构·django·课程设计
Bs_MoneyMagnet10 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
Bs_MoneyMagnet12 小时前
基于springboot+vue的心理咨询预约与随访平台的设计与实现 源码+文档
vue.js·spring boot·后端·spring·毕业设计·旅游·计算机毕业设计
李明卫杭州14 小时前
React 复合事件系统对比解析
前端·javascript·react.js
行者全栈架构师15 小时前
Spring Boot 接入 MaxKey 单点登录:6 个内部系统,一次登录全通行
java·vue.js·后端
万敏15 小时前
Vue3 全栈实战第九周:Node.js + Express 后端从零搭建实战记录
vue.js·node.js·全栈
LEE15 小时前
前端转型全栈 01:数据建模,前端最大的盲区
前端·javascript·后端
雪芽蓝域zzs15 小时前
第四十七节:驾驶舱大屏 ECharts 图表集成
前端·javascript·vue.js
梦醒沉醉16 小时前
7、表达日期和时间(前朝遗老Date)
javascript