微信小程序传参回退首页且不能有左上角的返回键 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

微信小程序传参回退首页且不能有左上角的返回键

发表时间:2021-1-5

发布人:葵宇科技

浏览次数:77

首先业务场景是:

首页选择车型, 进入二级页面进行车系选择, 选好再进入三级页面选择具体车型. 三级选好之后跳回首页,将首页选择车型字样变成选择的车型

开发发现的问题:

  • 问题一

第一个想法是使用 wx.navigateTo({url:""})方式, url 传参进行数据传递,然而

这样做回到首页的时候左上角会有一个回退按键

  • 问题二

于是想到重定向的路由 wx.redirectTo({url:""}) 这样理论上是不会有返回按键的, 实际上重定向确实不会有返回按钮,但是

使用重定向在本项目中不适用 还是会有返回键

原因是有三级页面,首页跳第二级页面的时候还是需要返回的 所以只能使用 wx.navigateTo({url:""}), 等到三级页面的时候再使用 wx.redirectTo({url:""}) 就不会再有作用了, 必须是都是使用的重定向才可以

  • 问题三

后来找到一个 api wx.navigateBack({delta: 2}) 关闭当前页面,返回上一页面或多级页面. 这个方法正好可以使用.直接回退两个页面,回到首页.

不过传参是个问题, 首先想到的是数据缓存wx.setStorage,只不过略显麻烦,需要存储获取和删除

最终解决方法

api wx.navigateBack({delta: 2}) 中有句话 可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。 我们打印出获取的东西:

是一个数组 依次打开每个对象里面发现是每个页面的页面js里面的pages里的所有信息.. 然后你会发现 里面有 setData 方法, 那这样... 嗯, 这操作很骚. 我们之间可以在这个页面进行修改上一个或者上两个页面的 data 值了?!!!!

//在返回的函数方法内这样写
let pages = getCurrentPages();
let prevPage = pages[ pages.length - 3 ];  //这里就是获取到上某个页面 -3 就是上两级, -2 就是上一级 依次类推...
prevPage.setData({  
     car_type:this.data.cartype
})
wx.navigateBack({
     delta: 2
})
复制代码

这样就大功告成!!!!!

相关案例查看更多