iView Form 组件 validate 方法总是返回 true 的问题

在调用 Form 的 validate 方法时,验证总是出现 true,那是因为 rules 中的 trigger 是一个数组 ['blur', 'change'],表象是因为这个,接下来深度分析下。

具体原因

我们先从 Form 组件开始入手,找到 validate 方法,其中 102 行是循环的方式去调用 FormItem 的 validate 方法,再看这个 validate 方法,在 187 行调用了一个过滤rule 的方法,这个方法里面有一个关键的代码,在 184 行,这里的 rule.trigger.indexOf(trigger) !== -1trigger 是一个数组时,就会出现 false 的情况。

结论

在写 trigger 时,不能传入数组,若需要 blur, change 都进行验证,则不传 trigger 值即可。


Powered by Sairin