需求:当前页面调用接口成功后需要返回上一页面并调用函数
当前页面
在 onLoad 生命周期中将 getOpenerEventChannel() 方法挂载到赋值给 this.eventChannel
onLoad() {
this.eventChannel = this.getOpenerEventChannel();
},
在调用接口成功后使用 emit 去调用刷新方法
setTimeout(() => {
uni.navigateBack({
delta: 1
});
// 利用this.getOpenerEventChannel().emit('参数') 方法去调用 uni.navigateTo() 中的 events
// 参数就是上一页面 events 中的方法名
// 刷新上一页面
this.eventChannel.emit("refreshPage");
}, 1000);
上一页面
// 点击修改邮箱
handleClickModifyEmail() {
uni.navigateTo({
url: `./setting-email/setting-email?userId=${this.userInfoData.id}&userEmail=${this.userInfoData.fEmail}`,
events: {
refreshPage: () => {
// 调用页面获取列表接口
// 方法中的参数表示是否要重置data
this.fnGetUserInfo(true);
},
},
});
},
这样就实现了uniapp中回退到上一页面并触发函数的方法(目的是内层页面修改数据后刷新外层页面数据)
获取列表的接口
//获取列表
fnLoadListData(isClear = false) {
return new Promise((resolve) => {
getImplementList({
key: this.keyword,
})
.then((res) => {
const data = res.data || [];
if (isClear) {
this.listData = data;
} else {
this.listData = [...this.listData, ...data];
}
if (data.length === 0 || data.length < 10) {
resolve({
isLoaded: true
});
} else {
resolve({
isLoaded: false
});
}
})
.catch(() => {
resolve();
});
});
},