(vue.js)element ui 表单重置 this.$refs[formName].resetFields()不执行

发布于 2022-09-07 03:59:30 字数 2864 浏览 12 评论 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());
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尐偏执 2022-09-14 03:59:30

el-form需要接收一个model,并且需要配合el-form-item一起使用,并且在el-form-item上绑定prop属性,resetField方法才能好使。

<el-form :model="addServiceData" ref="addServiceForm">
    <el-form-item label="手机号" prop="mobile">
       <el-input v-model="data.mobile" placeholder="请输入手机号码"></el-input>
     </el-form-item>
</el-form>

并且addServiceData应该是个对象,定义在data里面,类似这样

data(){
    return {
        addServiceData: {
            mobile: ''
        }
    }
}
—━☆沉默づ 2022-09-14 03:59:30

外部重置这样用

this.$nextTick(() => {
   this.$refs['ruleForm'].resetFields()
})
川水往事 2022-09-14 03:59:30
  1. 使用 this.$refs 而不是 this.$ref
  2. 配合使用 this.$nextTick(() => {})
  3. el-form 中的 model / ref 以及 el-form-item 中的 prop 再检查一遍吧

2020年6月30日 10:55:49

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文