關於iview、element-ui重置表單並清除校驗的方法


平時在使用iview或者vue重置表單是時,我會習慣使用

this.$refs[formData].resetFields();

但是直接這樣寫上去方法是不起作用的,

內容必須要在每個form-item里加上prop屬性,並且與你v-model的值相同才可以生效

例如:

iview代碼段: 

<Modal v-model="showDialog" :title="modalTitle" :mask-closable="false">
    <Form  ref="formData" :model="formData" :rules="ruleValidate" label-position="top">
        <FormItem label="姓名:" prop="name">
             <Input type="text" v-model="formData.name"/>
         </FormItem>
         <FormItem label="年齡:" prop="age">
             <Input type="text" v-model="formData.age"/>
         </FormItem>
    </Form>
    <div slot="footer">
        <Button type="text"  @click="cancel('ruleValidate')">取消</Button>
        <Button type="primary" @click="Save('ruleValidate')">保存</Button>
     </div>
</Modal>

或者

<Modal v-model="showDialog" :title="modalTitle" :mask-closable="false" @on-ok='save' @on-cancel="cancel">
    <Form  ref="formData" :model="formData" :rules="ruleValidate" label-position="top">
        <FormItem label="姓名:" prop="name">
             <Input type="text" v-model="formData.name"/>
         </FormItem>
         <FormItem label="年齡:" prop="age">
             <Input type="text" v-model="formData.age"/>
         </FormItem>
    </Form>
</Modal>

只需在關閉彈框的cancel方法中寫上重置表單的方法即可,

  cancel() {
      this.$refs.formData.resetFields();
   }

后來發現重置表單清除校驗有另一種更為簡便的方法:

<Modal v-model="showDialog" :title="modalTitle" :mask-closable="false">
    <Form v-if="showDialog" ref="formData" :model="formData" :rules="ruleValidate" label-position="top">
        <FormItem label="姓名:" prop="name">
             <Input type="text" v-model="formData.name"/>
         </FormItem>
         <FormItem label="年齡:" prop="age">
             <Input type="text" v-model="formData.age"/>
         </FormItem>
    </Form>
    <div slot="footer">
        <Button type="text"  @click="cancel('ruleValidate')">取消</Button>
        <Button type="primary" @click="Save('ruleValidate')">保存</Button>
     </div>
</Modal>

只需要在From標簽上加上v-if="showDialog"這句代碼,當關閉彈框時showDialog=false,

再次打開彈框是showDialog置為true,這樣每次打開彈框它都會生成一個新的表單。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM