微信小程序返回多级页面的实现方法
2017-10-27 11:47
891 查看
微信小程序返回多级页面的实现方法
微信小程序开发中,返回上一页是很普遍的操作,最常见的是点击手机的返回键和点击自定义的按钮返回上一页这两种情况。点击手机的返回键我们不需要做处理,如果是自定义按钮实现返回效果,就要调用微信提供的API:
wx.navigateBack(OBJECT)
也可以通过 wx.navigateBack 方法实现返回多级页面,只要设置 delta 的值就可以:
//在C页面内 navigateBack,将返回A页面,delta = 1 时与 wx.navigateBack() 效果一致 wx.navigateBack({ delta: 2 })
但是有些时候,我们需要实现点击手机的返回键,也返回上两页或者多页,这样子就不能直接用上面的方法来处理了。我用过下面的两种方法来实现:
方法一:在页面C的 onUnload 方法里面调用 wx.navigateBack() ,这样可以实现返回到页面A,不过会有个问题,如果把页面C分享到微信聊天会话里面,然后关闭小程序,再从聊天会话打开页面C,还会调用 wx.navigateBack() 方法,并且报这个异常:
WAService.js:9 navigateBack with an unexist webviewId 0
方法二:另一种方法是在页面B的 onShow 方法中调用 wx.navigateBack() 实现返回 ,这样就可以避免方法一中出现的问题。实现的思路如下:
① 在页面C的 onUnload 方法里面判断是否可以返回前n页,通过 getCurrentPages() 方法可以获取当前的页面栈,根据页面栈的长度判断可以返回的层数,并且可以给所有页面的 data 设置参数,这里以返回上两页为例:
//这里是页面C的 onUnload 方法 onUnload: function() { var that = this //判断页面栈里面的页面数是否大于2 if(getCurrentPages().length > 2) { //获取页面栈 let pages = getCurrentPages() //给上一个页面设置状态 let curPage = pages[pages.length - 2]; let data = curPage.data; curPage.setData({'isBack': true}); } },
② 在页面B的 onShow 方法里面根据 isBack 的值,判断是否调用 wx.navigateBack() :
//这里是页面B的 onShow 方法 onShow: function() { var that = this //如果 isBack 为 true,就返回上一页 if(that.data.isBack) { wx.navigateBack() } },
方法一和方法二都不是直接从页面C到页面A,都是要先经过页面B,所以会出现页面B闪一下的情况,大家如果有更好的方法可以告诉我。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- 微信小程序实现动态设置页面标题的方法【附源码下载】
- 微信小程序实现页面跳转传值以及获取值的方法分析
- 在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
- 微信小程序实现页面跳转传值的方法
- 微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
- 微信小程序,如何在返回前一个页面时,执行前一个页面的方法
- 微信小程序 --- 6行代码实现页面返回顶部
- 微信小程序页面内点击按钮转发 按钮透明的实现方法
- 微信小程序实现点击返回顶层的方法
- 在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
- 清除aspx页面缓存的程序实现方法
- Android双击返回键退出程序的实现方法
- Android中再按一次返回键退出程序的实现(返回桌面)两种方法
- ASP.NET返回上一页面实现方法总结
- Android双击返回键退出程序的实现方法
- PHP程序实现支持页面后退的两种方法
- PHP实现模仿socket请求返回页面的方法
- 用asp实现返回上一个页面并刷新的3种方法 (精)
- ASP.NET返回上一页面实现方法总结
- js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法