小程序返回上一个页面并更新上一个页面的数据
小程序开发过程中经常有这种需求,需要把当前页面数据传递给上一个页面,但是wx.navigateBack()无法传递数据。
方法一:
把当前页面数据放入本地缓存,上一个页面再从缓存中取出。
方法二:
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
解决办法: 在当前页面拿到上一个页面的实例对象,然后调用该对象的方法完成数据传递。
页面A:
Page({
data: {
name: ''
},
...
,
//更新name
changeData: function(id){
this.setData({
id: id
})
}
})
页面B,假设有一个文本框用于输入姓名,点击返回按钮后更新页面A的id
Page({
//此方法用于文本框输入回调
inputTyping: function (e) {
//获取页面栈
var pages = getCurrentPages();
if(pages.length > 1){
//上一个页面实例对象
var prePage = pages[pages.length - 2];
//关键在这里
prePage.changeData(e.detail.value)
}
}
})
这样就可以实现数据传递给上一个页面,要注意页面A必须使用wx.navigateTo跳转到页面B,不能使用wx.redirectTo,这样会关闭上一个页面,导致页面B无法获取上一页Page实例。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!