小程序this.getOpenerEventChannel()当前页面与navigateTo页面之间数据通信

this.getOpenerEventChannel() 是微信小程序中获取页面打开它的页面事件通道的方法。但是,这个方法只在页面是被wx.navigateTo打开的情况下才能使用。如果页面是通过其他方式打开的,比如wx.redirectTo,那么就无法使用这个方法。

解决方案:

1、如果你需要在页面间通信,可以考虑使用wx.navigateTo 来打开新页面,并使用this.getOpenerEventChannel()来获取事件通道。

2、如果你需要在页面关闭时通知打开它的页面,可以考虑使用全局变量或者wx.setStorage/wx.getStorage来实现。

3、如果页面是通过wx.redirectTo或wx.switchTab打开的,你可以考虑使用wx.navigateBack来回退页面,并在回退前通过事件或者全局变量进行通信。

以下是一个使用wx.navigateTo和getOpenerEventChannel的简单例子:

页面 A(opener):

javascript 复制代码
// 打开页面 B
wx.navigateTo({
  url: 'pageB',
  success: function(res) {
    // 获取打开页面的事件通道
    var channel = res.eventChannel;
    // 监听页面 B 触发的事件
    channel.on('someEvent', function(data) {
      console.log(data);
    });
  }
});

页面 B(opened page):

javascript 复制代码
// 获取打开页面的事件通道
var channel = this.getOpenerEventChannel();
// 向打开页面发送事件
channel.emit('someEvent', { data: 'hello from page B' });
// 关闭当前页面,返回上一页面 A
wx.navigateBack();

注意:在实际使用中,请确保页面 A 已经打开,并且页面 B 是通过wx.navigateTo打开的,否则this.getOpenerEventChannel()可能无法正常工作。

相关推荐
2501_9159184143 分钟前
uni-app 项目 iOS 上架效率优化 从工具选择到流程改进的实战经验
android·ios·小程序·uni-app·cocoa·iphone·webview
00后程序员张1 小时前
如何在不同 iOS 设备上测试和上架 uni-app 应用 实战全流程解析
android·ios·小程序·https·uni-app·iphone·webview
微三云-轩2 小时前
区块链:重构企业数字化的信任核心与创新动力
人工智能·小程序·区块链·生活·我店
2501_915918411 天前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
黑马源码库miui520861 天前
JAVA同城打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
java·微信·微信小程序·小程序·uni-app
一口十个小甜虾1 天前
微信小程序体验版,当打开调试模式正常访问,关闭之后无法访问
微信小程序·小程序
悟空码字1 天前
微信开放平台第三方平台,可以管理多个微信小程序
微信·小程序·开放平台
じòぴé南冸じょうげん1 天前
微信小程序如何进行分包处理?
前端·小程序
说私域1 天前
基于开源AI大模型AI智能名片S2B2C商城小程序的参与感构建研究
人工智能·小程序·开源
毕设源码-邱学长2 天前
【开题答辩全过程】以 基于微信小程序的宠物领养系统为例,包含答辩的问题和答案
微信小程序·小程序·宠物