微信小程序携带参数跳转页面/获取页面栈
页面跳转携带参数(以传递两个参数为例)
a.wxml 页面传递 1 <navigator url="/pages/b/b?id=1&sid='289'"> <navigator>
wx.navigateTo跳转携带参数
1 wx.navigateTo({ 2 url: '/pages/a/a?id=1 + "&tu=" + 'a.jpg' 3 });
多个参数使用 & 连接 也可以写成这样(提倡)
1 var id=that.data.id; 2 var tu = that.data.id;
3 wx.navigateTo({ 4 url: `/pages/a/a?id=${id}&tu=${tu}` 5 });
需要携带的参数是个对象和数组时如何?抱歉,不可以!
这时可以将对象和数组转成字符串
1 let args = JSON.stringify(params); // 转成字符串携带
2 wx.navigateTo({ 3 url: `/pages/a/a?args=${args}` 4 });
跳转页面进行解析即可,在onload中捕获参数
1 let args = JSON.parse(options.args); // 解析回对象或字符串
当需要携带的参数太大,数据多如何?比如购物车到结算页面,大量参数需要从购物车获取,这样传值就太恶心了!
可以隔空取参数!!!
微信有提供这样的api吗?🐎,抱歉,没有!
但提供了获取页面栈的方法!
1. let pages = getCurrentPages();
2. let that = pages[pages.length - 2];
获取上一个页面的信息
1. that.data 就为上一个页面的data数据
操作上一个页面的显示
2. that.setData({
3. url: false // 上一个页面的参数设置
4. })
#是不是很🐂!当然可以将页面栈的方法封装起来,方便调用
注意:该方式和前一个页面的耦合在一起了,所以谨慎使用,如果前一个页面是通过重定向跳转的,就无法获取到该页面的数据了,
应重定向跳转后该页面会关闭,所以上一个页面将会变成上上个页面。(wx.redirectTo 方法跳转)
对于单独页面来说,由于要获取上一个页面的数据,调试起来就有点烦了!!!
明确的情况下使用还是可以的,哈。
wx.switchTab方法跳转导航页,无法携带参数,携带了也无效?
这时就可以通过本地的存储来缓存参数了,将参数缓存,跳转成功后取出,之后删掉缓存
声明:以上是个人的总结,由于知识面不同,难免有疏漏,希望指出!