小程序wx.navigateTo中的闭包
序 最近的开发任务中处理了这样一个情况: 打开小程序是从onLoad判断是否携带参数 判断用户是否登录 如果没有登录需要跳转登录并跳转回来 回来后继续使用(1)中携带的参数处理问题 听起来没有什么难点,我们只需要设置app.globleData就可以很轻松的完成需求。但是我思考问题的点在于登录环节:如果每次有类似的需求都要去改动登录页的代码,那会让登录页面的if条件越来越多,代码可读性也会持续下降。 于是我开始查找对登录页面修改最少的解决方案: 使用wx.router来完成需求,但是我不是专业写前端的,而是被拉来救急的,让我去看文档写代码是在太慢了。而且如果整个小程序都改用wx.router,这其中的修改成本也太高了。 使用app.globleData前面说了,也不太可取 最终我发现了wx.navigateTo中的success可以处理我的问题。 所以在这里将我的思路写下来做记录,也提供给有同样需求的人参考。 还是要用到app.globleData 是的,我的方式中还是要对app.globleData进行设置,但是约定了统一的格式,无论在哪个页面。 var pages = getCurrentPages() var curPage = pages[pages.length-1] app.globleData.navigateInfo = { url:"/"+curPage.route, success: function (e) { var page = getCurrentPages().pop() if (page == undefined || page == null) return; page.selectComponent("#coupon").runCoupon(); } } 在登录页面只需要判断app.globleData.navigateInfo这一个参数,并在完成登录操作后直接将navigateInfo对象交给wx.navigateTo方法执行就跳回了原来的页面。 这里面神奇的点在于可以直接执行组件中的某个方法