uniApp实现navigateBack返回修改前一页面数据(H5、APP、小程序)
·
前言:
官方有推荐用VUEX实现此类需求的,但是目前不太了解,先分享下目前的解决方案,之后熟悉了再更新下。
1、H5和APP/小程序的解决方案是不一样的,虽然都是通过getCurrentPages,但打印出来的前一页面的结构是不同的。
2、如果有问题的话打印prevPage仔细看下。
H5
getAddress(e){
if(this.isGetAddress == 1){
let index = e.currentTarget.dataset.index
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
//将前一页的address和address_id修改为当前选中的
prevPage._data.address = this.addressLists[index].address
prevPage._data.address_id = this.addressLists[index].id
//因为修改的是data里面的绑定数据,所以返回后页面数据会直接显示修改后的
uni.navigateBack()
}
},
APP/小程序
getAddress(e){
if(this.isGetAddress == 1){
let index = e.currentTarget.dataset.index
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
// console.log(prevPage)
// 按照打印结构这样赋值虽然成功但页面数据不会修改
// prevPage.data.$root[0].address = this.addressLists[index].address
// prevPage.data.$root[0].address_id = this.addressLists[index].id
prevPage.setData({
selectedAddress : this.addressLists[index].address,
selectedAddressID : this.addressLists[index].id
})
uni.navigateBack()
}
},
//前一页的onShow方法,把setData的数据赋值到当前页面绑定的变量上
onShow(e) {
let pages = getCurrentPages();
let currPage = pages[pages.length-1];
if(currPage.data.selectedAddress==undefined || currPage.data.selectedAddress==''){
}else{
this.address = currPage.data.selectedAddress
this.address_id = currPage.data.selectedAddressID
}
},
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐



所有评论(0)