美文网首页
element表单重置resetFields()方法不生效解决

element表单重置resetFields()方法不生效解决

作者: 前端放弃师 | 来源:发表于2021-12-03 10:58 被阅读0次

    this.$refs[xxx].resetFields();方法常见于弹出框内搭配表单使用时调用,用于重置表单内容。这里解释一下resetFields(),其本质是初始化数据而不是清空数据,理解这个本质才能想明白在什么时候使用该方法才是正确的。
    查看百度很多解决思路都是有问题的,说的半知半解甚至完全不搭边,首先resetFields()生效的前提条件有几点:
    1.form上必须有ref属性,例如

    <el-form :model="dataForm" :rules="dataRule" ref="dataForm">
    

    这个ref随便定义,但要注意单组件内有多个form时ref不能重名
    2.每个el-form-item上都要有prop属性,并且prop应该和绑定值名称保持一致

    <el-form-item label="名称" prop="name">
        <el-input
            class="inline-input"
            v-model="dataForm.name"
        ></el-input>
    </el-form-item>
    

    重置resetFields()方法不生效的解决方法:弹出框内的表单重置要在每次提交表单,关闭弹框前重置,可以直接在@close回调中写入,能解决弹出内所有情况的重置

    <el-dialog :title="id ? '编辑工具' : '新增工具'" width="50%" :visible.sync="visible" @close="handleClose">
    
    //关闭弹出时调用
    handleClose() {
        console.log('关闭')
        this.$refs["dataForm"].resetFields(); // 提交后重置,不能打开时重置
    }
    

    误区:不要在进入弹出框时执行resetFields()方法来重置,而是在关闭弹出前重置

    相关文章

      网友评论

          本文标题:element表单重置resetFields()方法不生效解决

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