小程序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()可能无法正常工作。

相关推荐
Lossya2 小时前
【python实操】python小程序之过七游戏以及单词单复数分类
开发语言·python·游戏·小程序
山山而川粤2 小时前
刷题系统小程序的设计
java·spring boot·后端·学习·小程序
程序员阿龙3 小时前
基于微信小程序爱心领养小程序设计与实现(源码+定制+开发)
微信小程序·小程序·健康监测·移动医疗·医疗服务优化·医疗信息系统·病人管理
正小安4 小时前
优秀博客:小程序通信方法在 Vue 3 中的对应技术
前端·vue.js·小程序
程序员阿龙6 小时前
基于微信小程序医院应急设备管理系统(源码+定制+解答)
微信小程序·小程序·医疗设备管理平台·医疗设备管理系统·医疗资源调度·医院应急管理平台·医疗设备监控
遇见小美好7 小时前
微信小程序技术框架选型
微信小程序·小程序·前端框架
某公司摸鱼前端9 小时前
uniapp微信小程序使用ucharts遮挡自定义tabbar的最佳解决方案
微信小程序·小程序·uni-app·echarts·ucharts
张人玉15 小时前
微信小程序——婚礼邀请函
微信小程序·小程序
万岳科技程序员小金15 小时前
知识付费APP开发指南:基于在线教育系统源码的技术详解
大数据·人工智能·小程序·app开发·在线教育系统源码·知识付费小程序·app开发实战