uni-app小程序uni.navigateBack返回上一个页面并传递参数.返回上个页面并刷新

返回上一个打开的页面并传递一个参数。有种办法就是使用

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

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

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

在这里插入图片描述

方法1:我们可以使用A页面原有方法
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)
}
}

如果使用uni.navigateBack该怎么传值呢

uni. e m i t ( ) 传值和 u n i . emit()传值和uni. emit()传值和uni.on()接收

B页面返回A页面
B页面:

uni.$emit('update',{msg:'页面更新'})

uni.navigateBack({
delta: 1
});

A页面:

onShow(){
uni.$on('update', function(e){
console.log('监听到事件来自 update ,携带参数 msg 为:'+e)
})
},
  • 注意接收的写在onShow里面。写在onload是不会执行的。

返回上个页面让他重新执行onLoad里面的方法:(这种方法不适用于传递参数的页面,因为返回的时候那个option是获取不到的)

 uni.navigateBack({
                            delta: 2,
                            success: () => {
                                let page = getCurrentPages().pop(); //跳转页面成功之后
                                if (page) {
                                    let e = {};
                                    page.onLoad(e); //执行上个页面的方法

                                }
                            }

                        })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的美,让我痴迷

你的好,我会永远记住你的。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值