如何解决控制台element-ui报错Cannot read property ‘resetFields’ of undefined

目录
文章目录隐藏
  1. 分析原因
  2. 解决办法

最近在做一个后台项目,采用的是 vue 全家桶和 element-ui 桌面端组件库,我也是第一次使用 element-ui,所以遇到了很多问题,正如标题一样,所以有必要整理记录这次的采坑经验,为后续需要的小伙伴提供帮助,当然大佬可以略过。

问题描述:使用 element 开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog>

绑定了数据 data 里的 commentForm 对象

为了在新增弹出框清空表单,使用了 this.$refs.formName.resetFields()

每次第一次点击新增显示弹出框,都会报错

“[Vue warn]: Error in event handler for “click”: “TypeError: Cannot read property ‘resetFields’ of undefined””

如何解决控制台报 Cannot read property ‘resetFields’ of undefined 错误

分析原因

mouted 加载 table 数据以后,隐藏的弹出框并没有编译渲染进 dom 里面。

所以 click=”dialogFormVisible=true;resetForm(‘dlgForm’)”click 弹出的时候$refs 并没有获取到 dom 元素导致’resetFields’of undefined

解决办法

1.($nextTick dom 下一次更新之后)

resetForm(formName) {
    this.$nextTick(() => {
        this.$refs.formName.resetFields();
    })
},

2、(如果是第一次就点击新增就没必要 reset, 根据元素 undefined 判断)

if (this.$refs.formName !== undefined) {
    this.$refs.formName.resetFields();
}

注意:对 DOM 一系列的 js 操作最好都要放进 Vue.nextTick()的回调函数中

「点点赞赏,手留余香」

8

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 如何解决控制台element-ui报错Cannot read property ‘resetFields’ of undefined

发表回复