场景:
angular,input回车之后触发form的ngSubmit,然后再是input本身的回车事件。
相同功能的还有一个是search按钮,不处罚ngSubmit事件。
线上:
登陆后的第一次操作只要是回车就会用问题,无法去到目标路由,后续操作没有问题。但是只要第一次操作不是回车,所有操作都没有问题。
local:
无法复现该问题。(试了40,50次之后,偶然复现了一次之后就稳定复现了,但这也是2天后的事情)
解决方法:从现象倒退,排除一切不可能的之后,剩下那个不可能的就是可能。
柯南说的?
答案:
回车会同时触发ngSubmit和input的按键事件,触发同一个函数,但是函数的第二个参数控制路由逻辑,两个函数的第二个参数相反。
理论上不管是谁先执行(一定是ngSubmit先执行),最后的路由结果都是一样的。
但是实际上,似乎极短时间的多次路由导向会出问题,以为第二个路由获取的参数会是第一个路由的结果,但实际上不是,会是第0次的路由结果。
那也就是说路由的先后执行顺序其实会导致不同的结果。类似于以为是顺序执行,结果却是并发执行。
但是关于为什么local最开始无法复现以及后续也不是稳定复现,以及只要第一次操作会出问题的原因,还不是特别清晰。