账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    (vue.js)element ui 表单重置 this.$refs[formName].resetFields()不执行
    58
    0

    我在一个弹框里有一个form表单,用于增加页面内容。点击取消按钮本身form里的内容都清空才对。使用了this.$refs['addServiceForm'].resetFields()不起作用。console出来
    console.log(this.$refs['addServiceForm'].resetFields());居然是undefined。

    <el-dialog
              title="新建服务"
              :visible.sync="addServiceDialogVisible"
              width="400px">
              <div>
                <el-form ref="addServiceForm">
                  <table class="base_table">
                    <tbody class="table_body1">
                      <tr>
                        <td width="15%" class="text_align_right">名称</td>
                        <td>
                          <el-input v-model="serviceName"></el-input>
                        </td>
                      </tr>
                      <tr>
                        <td class="text_align_right">简称</td>
                        <td>
                          <el-input v-model="serviceShorterName"></el-input>
                        </td>
                      </tr>
                      <tr>
                        <td class="text_align_right">类型</td>
                        <td>
                          <el-select v-model="serviceType" placeholder="请选择类型" @change="selectChange" style="width:100%">
                            <el-option
                              v-for="item in serviceTypeOptions1"
                              :key="item.value"
                              :label="item.label"
                              :value="item.value">
                            </el-option>
                          </el-select>
                        </td>
                      </tr>
                      <tr>
                        <td class="text_align_right">备注</td>
                        <td>
                            <el-input type="textarea" :rows="2" v-model="serviceRemarks"></el-input>
                            <!--加上resize="none"属性就不可以缩放了-->
                        </td>
                      </tr>
                    </tbody>
                  </table>
                </el-form>
              </div>
              <span slot="footer" class="dialog-footer modalCenter">
                <el-button type="primary" @click="addNewService">确 定</el-button>
                <el-button @click="cancleAddService">取 消</el-button>
              </span>
            </el-dialog>
    cancleAddService(){
          this.resetForm('addServiceForm');
          // this.serviceName='';
          // this.serviceShorterName='';
          // this.serviceRemarks='';
          // this.serviceType='';
          this.addServiceDialogVisible=false;
        },
        resetForm(formName) {
          this.$refs[formName].resetFields();
          console.log("form名称:"+this.$refs['addServiceForm'].resetFields());
        }
    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 孤獨患者 普通会员 1楼

      在 Vue.js 中使用 Element UI 的表单组件时,如果你发现 this.$refs[formName].resetFields() 没有执行,可能的原因和解决方案有以下几点:

      1. 确保表单 ref 名称正确: 确保你在表单元素上设置的 ref 属性与你调用 resetFields 方法时使用的名称相匹配。例如:

      ```html

      // 调用重置方法 this.$refs.myForm.resetFields(); ```

      1. 确保表单组件已完成渲染: 如果你在初始化或数据加载完成之前就尝试调用 resetFields 方法,由于此时 $refs 还未绑定到实际 DOM 元素,所以方法不会执行。你可以在 mounted 钩子函数中调用:

      javascript mounted() { this.$nextTick(() => { this.$refs.myForm.resetFields(); }); }

      1. 表单验证状态问题: 如果表单正在验证过程中,resetFields 可能会延迟执行。可以等待验证结束后再调用。

      2. Vue 版本或 Element UI 版本兼容性问题: 确保你的 Vue.js 和 Element UI 版本是兼容且最新的。如有版本问题,请尝试更新至稳定版。

      如果以上检查都没有问题但依然无法解决问题,请检查是否有其他逻辑错误或者异常阻止了该方法的执行。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部