【小程序开发】TypeError: _this4.getOpenerEventChannel(...).emit is not a function 问题解决

使用uni-app+vue2开发微信小程序时遇到一个界面之前传参的问题。想实现的逻辑是界面返回并通知前一个界面刷新。代码如下:

javascript 复制代码
GroupManager.getInstance().addGroupRemote(this.createGroupModel(), () => {
	uni.hideLoading()
	uni.showToast({
		icon: "success",
		title: "保存成功"
	})
	this.getOpenerEventChannel().emit("refreshGroup")
	uni.navigateBack()
}, e => {
	uni.hideLoading()
	uni.showToast({
		icon: "error",
		title: "保存失败"
	})
})

结果运行的时候报错:TypeError: _this4.getOpenerEventChannel(...).emit is not a function

网上查也没发现什么线索,后来想了很久才意识到我要返回的界面并不是跳转过来的上一个界面。整个跳转逻辑是:界面A跳转到界面B,界面B重定向到界面C,然后界面C返回界面A。

javascript 复制代码
uni.redirectTo({
	url: `/pages-group/pages/group-detail/index?isEdit=false&groupType=${item.groupType}&floorId=${this.floorId}&roomId=${this.roomId}`,
})

中间的界面B在跳转界面C的时候以及从栈中推出,而这个getOpenerEventChannel我猜是会从上一个直接跳转过来的界面(界面B)中找事件通道,自然是找不到的。

最后把redirectTo改成了navigateTo,C界面先返回到B界面,B界面再向A界面发射刷新事件。问题就解决了。

相关推荐
GISer_Jing10 分钟前
[总结篇]个人网站
前端·javascript
疯狂的沙粒31 分钟前
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
前端·uni-app·html
程序员秘密基地32 分钟前
基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
java·vue.js·spring boot·spring·web app
小妖66635 分钟前
html 滚动条滚动过快会留下边框线
前端·html
heroboyluck1 小时前
Svelte 核心语法详解:Vue/React 开发者如何快速上手?
前端·svelte
海的诗篇_1 小时前
前端开发面试题总结-JavaScript篇(二)
开发语言·前端·javascript·typescript
琹箐1 小时前
ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示
前端·javascript·anti-design-vue
程序员-小李1 小时前
VuePress完美整合Toast消息提示
前端·javascript·vue.js
Uyker2 小时前
从零开始制作小程序简单概述
前端·微信小程序·小程序
EndingCoder6 小时前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架