element的formItem源碼學習

1.mounted生命週期,若是當前的formItem有prop,觸發'el.form.addField'事件,把當前的formItem的this添加到form中的fields數組中;接下來保存當前初始化的值,默認狀況下,用 數組

Object.defineProperty() 添加的屬性值是不可修改的;函數

2.(1) this.getRules()獲得當前的formItem對應的prop的校驗規則,當前formItem的行內校驗規則優先於form綁定的校驗規則,若是當前formItem有required,則合併到校驗規則中;ui

(2) this.getFilteredRule(),等到當前觸發條件下的校驗規則,若是沒有填寫觸發條件,則返回當前formItem的全部校驗規則。this

代碼以下:3d

3.使用addValidateEvents()函數爲當前校驗綁定'el.form.blur'和'el.form.change'事件,對應的分別是this.validate('change')和this.validate('blur'),validate代碼以下:code

首先根據trigger參數獲取校驗結果。若是校驗規則不存在,直接調用回調函數,而後返回;orm

若是校驗規則存在,去掉每一項校驗規則裏面的trigger字段,把當前formItem的prop做爲key,校驗規則做爲value,放入descriptor,使用new AsyncValidator(descriptor)建立一個驗證器,而後調用validate方法進行校驗,校驗完成後調用回調函數;把校驗結果和校驗未經過的校驗規則傳給回調函數,{firstFields: true}參數表明當某一規則校驗失敗時,即終止校驗;若是elForm裏面有validate函數,則每次校驗調用此函數,並把當前參加校驗的prop值,校驗結果,校驗提示信息看成參數傳入。cdn


4.clearValidate()移除該表單項的校驗結果,代碼以下:blog


5.resetField()對該表單項進行重置,將其值重置爲初始值並移除校驗結果,代碼以下:生命週期

最後一句是執行ElTimeSelect的fieldReset事件,將this.initialValue做爲參數傳入


6.最後就是不知道this.validateDisabled是幹啥用的?有小夥伴知道的,能夠留言哦。

相關文章
相關標籤/搜索