小程序开发

2020-06-29  本文已影响0人  Do_Du

一、小程序中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
})
上一篇 下一篇

猜你喜欢

热点阅读