uni.navigateBack()返回时传递参数

moonjerx
2022-08-17 / 0 评论 / 281 阅读 / 正在检测是否收录...

假如从B页面返回A页面:

var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
prevPage.setData({
  mdata:1
})

经过测试,在uni.app中使用B页面使用setData设置A页面参数无法实现(应该是被更改为常量属性了)。
打印console.log(prevPage)前一页面对象可得:

l6xe9bls.png

方法1:我们可以使用A页面原有方法

onHide: ƒ ()
onLoad: ƒ ()
onReady: ƒ ()
onResize: ƒ ()
onRouteEnd: ƒ ()
onShow: ƒ ()
onUnload: ƒ ()
options
...

B页面传递:

var object={
  sx1:"参数1",
  sx2:"参数2",
}
prevPage.onShow(object);
uni.navigateBack();

A页面接收参数:

onShow(object){
  if(!!object){
    console.log(object)
  }
}

方法2:A页面自定义方法接收参数

B页面传递:

var object={
  sx1:"参数1",
  sx2:"参数2",
}
prevPage.$vm.otherFun(object);//重点$vm
uni.navigateBack();

A页面接收参数:

otherFun(object){
  if(!!object){
    console.log(object)
  }
}
function navigateBack(o, tarFunName, params) {
    if (tarFunName && params) {
        let num = Common.isNumber(o) ? o + 1 : o.delta + 1
        let pages = getCurrentPages();
        let prevPage = pages[pages.length - num]; //上一个页面
        prevPage.$vm[tarFunName](params);
    }
    uni.navigateBack(o)
}
0

评论 (0)

取消

您的IP: