uniapp页面回退并更新前页数据,不使用onShow掉接口

第一种方式

通过getCurrentPages获取所有页面栈实例列表的方式(直接上代码)

A页面(相当于我上面所说的列表页)

data(){ return{ status:true; //我们要修改的状态或者数据 }}

B页面(也就是我们A跳过去的页面)

goBack(){ let pages = getCurrentPages()//获取所有页面栈的实例列表 let nowPage = pages[ pages.length - 1 ] //当前页面的实例 let prevPage = pages[ pages.length - 2 ] //上一个页面的实例 prevPage.$vm.status = false //更改上一个页面的数据 uni.navigateBack({ delta:1 //返回上一页 })}

uni.navigateBack({
   delta: 1,
   success: function() {
   // 获取页面栈
   let pages = getCurrentPages();
   if (pages.length >= 2) {
	// 获取上一页实例
	let prevPage = pages[pages.length - 2];
	// 更新数据
    prevPage.$vm.getData()  //上一个页面的接口
   }
  }
})

第二种方式

所以我尝试了另一种方法,$emit,$on,$off的方式去完成这个修改上一页面值的操作

B页面(我们A跳过去的页面,但是B要返回A页面同时修改值)

methods(){ goBack(){ uni.$emit('newPages',{ id:this.pages.id //这个页面的id value:'你想要传过去的值' }) uni.navigateBack() }}

A页面(B页面返回过来同时修改值)

!!!注意最好不要以这种方式写,不然会出现卸载不掉(off)不掉的问题,卸载不掉!卸载不掉!

methods:{

}

onLoad(){ uni.$on('newPages',(e)=>{ this.infoList.forEach((item)=>{ if(item.id==e.id){ item.value = e.value } }) })}

onUnload(){ uni.$off('newPages')}

这种方式来写是最好的(我们把修改的方法写到methods里面当中去,执行方法和卸载方法必须指向的是同一个地址)

methods:{ upData(){ this.infoList.forEach((item)=>{ if(item.id == e.id){ item.value = e.value //修改值 } }) }},

onLoad(){ uni.$on('newPage',this.upData)//on内部调用的时候,会把传过来的参数塞给on监听的执行函数},

onUnload(){ uni.$off('newPage',this.upData)//这样就可以卸载掉了}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用uni-app提供的页面生命周期函数和uni.navigateTo()方法来实现返回上一页面并刷新页面重新根据接口获取数据的功能。 具体实现方法如下: 1. 在页面的onLoad()生命周期函数中,调用接口获取数据并将数据保存在页面的data中。 2. 在页面的onShow()生命周期函数中,判断是否需要重新获取数据。如果需要,则调用接口获取数据并将数据保存在页面的data中。 3. 在页面的onUnload()生命周期函数中,清空页面的data数据。 4. 在页面中设置一个返回按钮,并在按钮的点击事件中使用uni.navigateTo()方法返回上一页面。 5. 在上一页面的onShow()生命周期函数中,判断是否需要刷新数据。如果需要,则调用接口获取数据更新页面。 下面是一个示例代码: ``` // 返回按钮的点击事件 goBack() { uni.navigateTo({ url: '../previousPage/previousPage' }) } // 当前页面的生命周期函数 onLoad() { // 调用接口获取数据并保存在data中 // ... }, onShow() { if (this.needRefresh) { // 调用接口获取数据并保存在data中 // ... this.needRefresh = false; } }, onUnload() { // 清空data中的数据 // ... } // 上一页面的生命周期函数 onShow() { if (this.needRefresh) { // 调用接口获取数据更新页面 // ... this.needRefresh = false; } } ``` 需要注意的是,示例代码中的this.needRefresh是一个标记变量,用于判断是否需要重新获取数据或刷新数据。你可以根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值