亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

elementUI表單驗證踩坑問題怎么解決

發布時間:2023-03-17 16:35:07 來源:億速云 閱讀:154 作者:iii 欄目:web開發

本文小編為大家詳細介紹“elementUI表單驗證踩坑問題怎么解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“elementUI表單驗證踩坑問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

我總結之后,有四個要注意:

1.在v-for的列表下,form表單的驗證該如何精確觸發
2.對list進行增刪操作的時候,如何確保視圖正確更新
3.自定義驗證規則的時候,如何知道操作的數據在數據結構中的準確位置
4.對象深層的key驗證該如何觸發

這是要操作的列表:elementUI表單驗證踩坑問題怎么解決

  <div
         class="boxItem"
         v-for="(item, index) in formData.boxList"
         :key="item.guid"
       >
        <el-form-item
             :label="keytolabel(subkey)"
             v-for="(subItem, subkey) in item"
             :key="subkey"
             :prop="`boxList.${index}.${subkey}`"
        </el-form-item>
 </div>

第一個問題的解決方案:

我們在遍歷form-item的時候,就需要prop屬性,根據官方文檔的說明,prop是表單域 model 字段,在使用 validate、resetFields 方法的情況下,該屬性是必填的。正是這個屬性,可以讓組件知道觸發的時機。其中的觸發邏輯沒有去深入研究。

  :prop="`boxList.${index}.${subkey}`"

在rules這里sybkey要和rules的key值對應上才可以正常觸發

     rules: {
       screenlength: [{ validator: lengthhandler, trigger: "blur" }],
      }

如上述所示,根據list的數量進行遍歷行數,再根據item來遍歷列數。每一列都有不定數量的key值,那么在這里的我們需要給prop指定到準確的位置,大概模式就是父key.行數.列key,簡單地來說,就是要將這個值所在的數據結構位置告訴element組件。

根據我的猜測,element表單組件觸發驗證的邏輯是監聽這個值的變化,根據給定的觸發條件(change,input,blur,focus等等),符合觸發條件就去對比是否發生值的變化,然后根據驗證規則去做相應的提示。

第二個問題的解決方案:

我們在遍歷form-item的時候,vue會要求必須有一個key,這樣可以正確更新視圖。那么這一個key最大的特點是要操持唯一。我的方案是給key值生成一個唯一id,或者new Date().getTime()生成一個時間戳,當我們對列表進行操作的時候,就會正確更新視圖了。

例如:當我們觸發第一和第二的item驗證的時候

elementUI表單驗證踩坑問題怎么解決再去刪除第二個item,視圖就會在刪除之后,驗證提示會刪除

elementUI表單驗證踩坑問題怎么解決

如果不是唯一key,例如使用index做key值,那么這個key是不會變化的,刪除第二個item就會出現以下情況

elementUI表單驗證踩坑問題怎么解決

當發生這種情況的時候,你應該考慮的是vue的視圖更新規則

第三個問題的解決方案:

自定義驗證規則在官方文檔有詳細的說明,這一塊就不用細說了,但是里面的觸發邏輯需要根據情況來修改代碼。例如總數是根據前面的長和高相乘公式得出的,那么我們需要每次在長和高的值變化的時候,就需要去計算總數,然后根據規則去進行提示。

設置一個currentIndex,在長和高的輸入框組件上定義focus事件,每次觸發就說明輸入框在操作,這一行就被操作的一行數據,那么在定義驗證的時候就知道是哪一行了

  // 在組件focus的時候,就說明想操作這個組件,提前將位置記錄,以便于數據驗證
   focus(data) {
     this.currentIndex = data.index;
   },

當然,代碼還是要根據具體交互來編寫

第四個問題的解決方案:

很多時候,我們都只是對表層key進行驗證,所以如果需要驗證對象的深層可以的時候,我們需要做特殊處理,和第一個問題的處理方式類似,但又不完全相同。

// 要驗證的數據結構:
   formData:{
       sendcard:{
       sendcardsource:""
       }
   }
   //prop:組件屬性
     <el-form-item  prop="sendcard.sendcardsource">
     </el-form-item>  
     
  //rules:規則設置
       rules: {
       // 發送卡
       "sendcard.sendcardsource": [commonRule],
       }

這里的特點就是需要在rules屬性定義一個驗證驗證規則,prop的值要跟rules的值對應上才可以觸發。這里的特點是,對象和對象的可能會有相同的key,所以這樣做是可以在rules設置一個唯一的觸發key值。

讀到這里,這篇“elementUI表單驗證踩坑問題怎么解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诏安县| 射阳县| SHOW| 黑河市| 长葛市| 隆回县| 措美县| 云阳县| 衡南县| 明光市| 岑巩县| 友谊县| 新兴县| 伊宁县| 临漳县| 南通市| 新化县| 阳山县| 永登县| 墨江| 五寨县| 涿州市| 庆云县| 湟源县| 博湖县| 恩施市| 军事| 德庆县| 焦作市| 阿坝县| 南平市| 阿克陶县| 夹江县| 三亚市| 依安县| 万载县| 馆陶县| 安新县| 东乡族自治县| 榕江县| 襄垣县|