1优烧、背景
使用表單驗(yàn)證時(shí)沛豌,如果有多個(gè)模塊需要切換夭咬,每個(gè)模塊下的元素都使用了validate進(jìn)行驗(yàn)證啃炸,模塊之間切換時(shí),使用 v-if 卓舵、v-else 的方式就會(huì)導(dǎo)致標(biāo)題上面的錯(cuò)誤
2南用、解決辦法
-
方法一:使用v-show切換
使用v-show,通過(guò)改變?cè)氐?css 屬性(display)來(lái)決定元素是顯示還是隱藏掏湾,節(jié)點(diǎn)仍能找到裹虫,上述報(bào)錯(cuò)不會(huì)再出現(xiàn)
但是會(huì)導(dǎo)致另一個(gè)問(wèn)題:提交時(shí),節(jié)點(diǎn)仍存在融击,則會(huì)啟動(dòng)里面驗(yàn)證筑公,并且會(huì)看到一個(gè)錯(cuò)誤,提示我尚未完成所有必填字段尊浪,無(wú)法提交匣屡,不符合需求
-
方法二:保留v-if,給每個(gè)模塊下的校驗(yàn)元素一個(gè)獨(dú)特的key值
該問(wèn)題是由于 vue.js 使用的 "就地補(bǔ)丁"策略而出現(xiàn)的拇涤,只要通過(guò)對(duì)每個(gè)輸入的元素的key值設(shè)置唯一值就可以解決這個(gè)問(wèn)題捣作。方法親測(cè)有效
// eg <form-input key="unique" validate='xxxx'></form-input>
方法三:網(wǎng)上也有說(shuō)添加指令 .persist 有效,但我試了鹅士,仍報(bào)錯(cuò)
參考資料:
1券躁、https://stackoverflow.com/questions/57651519/vee-validate-validating-a-non-existing-field