zoukankan      html  css  js  c++  java
  • Cannot read property 'resetFields' of undefined 问题及引申

    问题描述: 使用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""

    问题原因: 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()的回调函数中

  • 相关阅读:
    PAXOS: libevent_paxos
    R提高篇(五): 描述性统计分析
    R提高篇(四): 数据管理二
    R提高篇(三): 数据管理一
    锂电池知识
    R提高篇(二): 图形初阶
    R提高篇(一): 输入输出
    动力电池基本知识篇
    DW(六):polybase访问Azure Blob Storage
    DW(五):polybase集群安装
  • 原文地址:https://www.cnblogs.com/papi/p/9268801.html
Copyright © 2011-2022 走看看