鍍金池/ 問答/HTML/ (vue.js)element ui 表單重置 this.$refs[formN

(vue.js)element ui 表單重置 this.$refs[formName].resetFields()不執(zhí)行

我在一個(gè)彈框里有一個(gè)form表單,用于增加頁面內(nèi)容。點(diǎn)擊取消按鈕本身form里的內(nèi)容都清空才對(duì)。使用了this.$refs['addServiceForm'].resetFields()不起作用。console出來
console.log(this.$refs['addServiceForm'].resetFields());居然是undefined。

<el-dialog
          title="新建服務(wù)"
          :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">簡(jiǎn)稱</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="請(qǐng)選擇類型" @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());
    }
回答
編輯回答
墻頭草

el-form需要接收一個(gè)model,并且需要配合el-form-item一起使用,并且在el-form-item上綁定prop屬性,resetField方法才能好使。

<el-form :model="addServiceData" ref="addServiceForm">
    <el-form-item label="手機(jī)號(hào)" prop="mobile">
       <el-input v-model="data.mobile" placeholder="請(qǐng)輸入手機(jī)號(hào)碼"></el-input>
     </el-form-item>
</el-form>

并且addServiceData應(yīng)該是個(gè)對(duì)象,定義在data里面,類似這樣

data(){
    return {
        addServiceData: {
            mobile: ''
        }
    }
}
2018年7月8日 17:42
編輯回答
念舊

外部重置這樣用

this.$nextTick(() => {
   this.$refs['ruleForm'].resetFields()
})
2018年4月23日 16:45