1.mounted生命周期,如果当前的formItem有prop,触发'el.form.addField'事件,把当前的formItem的this添加到form中的fields数组中;接下来保存当前初始化的值,默认情况下,用
Object.defineProperty() 添加的属性值是不可修改的;
2.(1) this.getRules()得到当前的formItem对应的prop的校验规则,当前formItem的行内校验规则优先于form绑定的校验规则,如果当前formItem有required,则合并到校验规则中;
(2) this.getFilteredRule(),等到当前触发条件下的校验规则,如果没有填写触发条件,则返回当前formItem的所有校验规则。
代码如下:
3.使用addValidateEvents()函数为当前校验绑定'el.form.blur'和'el.form.change'事件,对应的分别是this.validate('change')和this.validate('blur'),validate代码如下:
首先根据trigger参数获取校验结果。如果校验规则不存在,直接调用回调函数,然后返回;
如果校验规则存在,去掉每一项校验规则里面的trigger字段,把当前formItem的prop作为key,校验规则作为value,放入descriptor,使用new AsyncValidator(descriptor)创建一个验证器,然后调用validate方法进行校验,校验完成后调用回调函数;把校验结果和校验未通过的校验规则传给回调函数,{firstFields: true}参数代表当某一规则校验失败时,即终止校验;如果elForm里面有validate函数,则每次校验调用此函数,并把当前参加校验的prop值,校验结果,校验提示信息当作参数传入。
4.clearValidate()移除该表单项的校验结果,代码如下:
5.resetField()对该表单项进行重置,将其值重置为初始值并移除校验结果,代码如下:
最后一句是执行ElTimeSelect的fieldReset事件,将this.initialValue作为参数传入
6.最后就是不知道this.validateDisabled是干啥用的?有小伙伴知道的,可以留言哦。