1. 程式人生 > >iview部分表單驗證部分重置避免出現不友好的錯誤提示

iview部分表單驗證部分重置避免出現不友好的錯誤提示

此坑是在做專案的時候,多次遇到,具體的描述就是,在一個表單進行賦值,並且有可能會被修改,但是沒有被修改的情況下,提交表單驗證,部分type型別對不上的就會報錯,但是表單值都是完整的,因為修改的時候進行了預設賦值,解決這個問題,直接將驗證中的trigger刪掉就行了,問題得到解決;

但是,當你這麼做的時候,當重新開啟新表單,沒有賦值的時候,會進行一次表單驗證,注意是在已賦值過後,再次開啟這個新表單,此時是新增,不是修改,表單就一個,表單複用;這個時候上一次不知道什麼原因造成的驗證錯誤留在了頁面上;

這裡的解決方法就是,重置那幾條出現錯誤的input,下面是原理,具體的我沒仔細看,也是從別的博文上看到的,反正我就複製了下面的解決辦法;

檢視iView的resetFields方法的原始碼,這個方法是這樣寫的,就只有一句話:
resetFields:function(){this.fields.forEach(function(e){e.resetField()})}

*從這個forEach我們可以聯想出整個表單的域是通過迴圈一個個重置的,每個域通過resetField這個方法進行重置,真正執行重置的是forEach裡面的resetField方法。
那麼這個fields應該就是所有域的集合了,console.log()一下,果不其然。
可以先看一下整個結構

console.log(this.$refs [name])

也可以直接看域的array

console.log(this.$refs [name].fields)

在每個屬性的域中都有prop屬性,可以通過這個屬性去重置表單

this.$refs [name].fields.forEach(function (e) {
      if (e.prop == 'abc') {
          e.resetField()
      }
})

這個意思就是使用ressetField方法去重置一個域為abc的FormItem;

本文轉載自【iView表單部分域重置】,侵刪;