一、小程序中onShow
获取options
参数
onLoad
是可以获取options
参数,但是onShow
获取不到,可以通过页面栈来获取
onShow(){
let pages = getCurrentPages(); // 获取当前小程序的页面栈 -数组 长度最大是10个页面
let currentPage =pages[pages.length -1]; // 数组中 索引最大的页面就是当前页面
let options = currentPage.options; // 即可以获取到同onLoad一样的参数
}
二、获取上一个页面的页面栈、给上一个页面数据赋值、调用上一个页面的方法
let pages = getCurrentPages();
let PrePage = pages[pages.length -2];
PrePage.setData({ // 给上一个页面数据赋值
isShow: true
})
wx.navigateBack({ // 返回上一个页面
delta: 1
})
或
setTimeout(()=>{
wx.navigateBack({
delta: 1,
success(res){
PrePage.setData({ // 给上一个页面数据赋值
isShow: true
})
PrePage.getUserInfo();
}
})
},2000)
或 上一个页面数据是对象形式
<view data-ajaxData="ajaxData.realname">这是上一个页面</view>
传到下一个页面'ajaxData.realname'
下一个页面onLoad方法接收参数'ajaxData.realname' 并存至objData
var that = this,
result = that.data.result ? that.data.result : '',
objData = that.data.objData; // objData = ajaxData.realname
let pages = getCurrentPages();
let PrePage = pages[pages.length -2];
console.log(prePage.data[objData]); // 等价于 prePage.data.ajaxData.realname 但是不可以这么写
result = prePage.data[objData] ? prePage.data[objData].concat(result): result; // prePage.data[obj] 获取上一页obj对象字段值
prePage.setData({ // 需要传递的参数在这里setData,上个页面就会执行
[objData] : result
})
wx.navigateBack({
delta: 1
})
网友评论