我的习惯是不看说明书直接开搞,这次也不例外。
结果把所有代码层面的bug都清除了,还会发现终极bug出在对框架的理解和应用上。
首先是setTimeout问题,这玩意是会突破页面,在任何时候发生作用的,也就是说如果你设定定时弹框的话(用系统组件showModal之类),就算你点返回离开当前页面,它还是会准时生效。一开始我想把它写在page()方法里应该没事,结果发现根本挡不住。只好在unload的时候把它清除掉。现在猜想可能有如下可能:
可能性1:点返回时用的是navigateback,毕竟不是redirect,所以意味着原页还存在着,所以setTimeout是在原页运行,但是模态框的特点就是杀到前台最高点,何况它本身是wx对象的方法,所以就弹了。
可能性2:微信小程序就是一单页应用,页面根本都不存在,如果不封装的话,一切都会乱跑。
总之无论如何,现在我把所有直接用到this的都给封到page()里去是没错的,但是现在关页面就清掉所有定时器,这个做法可能会导致以后的逻辑问题,还是应该改掉