【小程序开发】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界面发射刷新事件。问题就解决了。

相关推荐
一枚前端小能手9 分钟前
「周更第3期」实用JS库推荐:Lodash
前端·javascript
艾小码9 分钟前
Vue组件到底怎么定义?全局注册和局部注册,我踩过的坑你别再踩了!
前端·javascript·vue.js
Cyan_RA915 分钟前
计算机网络面试题 — TCP连接如何确保可靠性?
前端·后端·面试
谢尔登15 分钟前
【CSS】层叠上下文和z-index
前端·css
鹏多多17 分钟前
前端复制功能的高效解决方案:copy-to-clipboard详解
前端·javascript
AryaNimbus19 分钟前
你不知道的 Cursor系列(三):再也不用死记硬背 Linux 命令,终端 Cmd+K 来帮你!
前端·ai编程·cursor
uhakadotcom20 分钟前
Rollup 从0到1:TypeScript打包完全指南
前端·javascript·面试
Mintopia26 分钟前
实时语音转写 + AIGC:Web 端智能交互的技术链路
前端·javascript·aigc
2503_9284115628 分钟前
9.15 ES6-变量-常量-块级作用域-解构赋值-箭头函数
前端·javascript·es6
Pedantic30 分钟前
SwiftUI ShareLink – 显示分享表单的使用
前端