今天在开发过程中发现有关iview表单校验的一个非常离奇的bug。
我之前心血来潮,直接向从js文件引入的表单校验rules数组添加validator函数,本以为使用箭头函数然后从this中获取相应变量的方式没有问题,但是今天突然发现bug。在formData中相应startTime符合条件的情况下,仍然提示‘结束时间不能小于开始时间’,代码如下图所示。
然而,在多次测试后发现,这个this一直是第一次获取到的那个this,内部所有的值都没有跟据组件内的变化而变化,也就是说,validator第一次拿到this之后,就固化下来了。我不清楚是什么原因导致的,后来的解决方案是将validator函数写在js文件中,把原本作为对象引入的twoValidate修改为函数,在组件中通过call绑定this调用,目前测试下来没有发现问题