一、setData()方法
a页面跳转到b页面,b页面返回a页面,a页面获取b页面返回的值
例子:b页面进行操作后,返回a页面,要求a页面要进行刷新重新请求数据
b页面
change(){
let pages = getCurrentPages();
pages.forEach((item,index)=>{
if(item.route == 'pages/a'){//判断上个页面的路径
let prePage = pages[index]
prePage.setData({//给上个页面设置数据,传给上个页面
isRefresh:1
})
}
})
}
a页面,要写在onShow()里
onShow(){
let pages = getCurrentPages();
let curPage = pages[pages.length - 1];
//isRefresh是b页面返回给a页面的key
if(!empty(curPage.data.isRefresh)){
if(curPage.data.isRefresh == 1){
...
}
curPage.setData({
isRefresh:0
})
}
}
ps:这种方式貌似仅限小程序
二、uni.once()与uni.emit()
b页面
uni.$emit('isRefresh',1)
a页面
//需要放在onShow里获取,并且在function里this貌似不能用,会报错,所以需要在外面let that = this
//uni.$u.test.isEmpty()是uview判断空值的js
onShow() {
let that = this
uni.$once('isRefresh',function(data){
if(!uni.$u.test.isEmpty(data)){
that.fun()
...
}
})
},