大家在编写微信小程序的时候会遇到传值问题,从A页面跳转到B页面,同时B页面的数据请求需要A页面的数据时,该怎么办?
当然,最简单的办法是,将A页面的数据传递给app.js
app.globalData.data = data
然后在B页面请求
var data = app.globalData.data
这样虽然会请求到数据,当时当项目比较大时,会造成app.js文件的臃肿,存储过多的垃圾或者没必要的数据;
于是,本人又想到一个方法;
wx.setStorage({
key:"data",
data:data
})
在B页面请求缓存
wx.getStorage({
key:"data",
success:function(res){
var data = res.data
})
这样会获取到A页面的数据,但是也会造成缓存中有许多的垃圾数据存在
今天发现一个新的办法,分享给大家,就是利用小程序的页面栈去实现数据的读取
var pages = wx.getCurrentPages() //获取到页面栈
var currentPage = pages[pages.length-1] //获取到当前页面
var prevPage = pages[pages.length-2] //获取到上一个页面
var data = prevPage.data.data //取到数据
注:这种方法使用时,页面跳转要使用wx.navigateTo
同时,还可以将数据存储在url中,例如
wx.navgaterTo({
url:"/pages/pageA/pageA?id=" + 数据
})
在pageA页面获取当前的页面网址,currentPage
var url = currentPage.route //这是网址
var data = currentPage.options //传的参数