this.$refs[name].resetFields 不生效问题

742 阅读1分钟

Vue中this.$refs[name].resetFields();的使用

在项目中遇到使用ref重置不好使,查找资料排查问题,

问题所在:

1.- 经典问题: $refs的须在this.$nextTick()中调用生效

      this.$nextTick(() => {
        this.$refs['name'].resetFields();
      });

2.- refmodel问题:ref不需要非得和model一样,

:v-model获取的是对象,只跟值有关,而ref获取到的是为了操作Dom对象,可以使用$refs来操作

<el-form ref="formRef" :model="form">
</el-form>

3.- FormFormItem中必须要有prop属性

prop 是在 FormItem 中

<el-form ref="formRef" :model="form">
     <el-form-item label="用户名:" prop="name">
       <el-input v-model="form.name"></el-input>
     </el-form-item>
     <el-form-item label="密码:" prop="password">
       <el-input v-model="form.password"></el-input>
     </el-form-item>
</el-form>

4.- 最终完整代码调试

<template>
  <el-form ref="formRef" :model="form">
       <el-form-item label="用户名:" prop="name">
         <el-input v-model="form.name"></el-input>
       </el-form-item>
       <el-form-item label="密码:" prop="password">
         <el-input v-model="form.password"></el-input>
       </el-form-item>
  </el-form>
  <el-button @click="resetFields">重 置</el-button>
<template>

<script>
data(){
   return {
     form: {
       name: '',
       code: '',
     }
   }
}
methods: {
   resetFields(){
       this.$nextTick(() => {
           this.$refs['name'].resetFields();
       });
   }
}
</script>