收藏
回答

管理后报错:getOpenerEventChannel().on is not a function

框架类型 问题类型 操作时间 AppID
小程序 Bug 08-14 wx0d7df67087e92b24

前一个版本在页面间传值时,采用的是将对象缓存在 app.js 中,然后在 onLoad() 中将其获取并设置为 null 的方式;在当前版本中,采用了依赖 EventChannel 进行传值的方式,但是管理后台出现大量报错,错误为 this.getOpenerEventChannel().on is not a function,本地开发工具和真机调试均无法复现该异常。

相关情况如下:

发布新版本时为全量发布;管理后台基本库最低设置为 2.7.3;报错页面无其它跳转进入途径;

相关代码如下:

第一个页面

  toPrescription: function() {
    let that = this;
    util.checkUserState(-1, true, function (res) {
      let acceptData = {
        'selectedMember': null
      }
      if (that.data.members.length > 0 && that.data.members[0].isSelf) {
        acceptData.selectedMember = that.data.members[0];
      }
      wx.navigateTo({
        url: '/pages/diagnosis/prescription/prescription',
        success: function (res) {
          // 通过eventChannel向被打开页面传送数据
          res.eventChannel.emit('toPrescription', { data: acceptData });
        }
      });
    });
  },


第二个页面

  onLoad: function(options) {
    let that = this;
    let eventChannel = this.getOpenerEventChannel();
    // 监听事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('toPrescription', function (data) {
      let acceptData = data.data;
      if (acceptData && acceptData.selectedMember) {
        that.setData({
          selectedMember: acceptData.selectedMember
        });
      }
    });
  },


管理后台截图:

最后一次编辑于  08-18
回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员-娇华
    社区技术运营专员-娇华
    08-18

    你好,管理后台错误截图补充下。

    08-18
    有用
    回复 1
    • 河蟹爸爸爱萝莉
      河蟹爸爸爱萝莉
      08-18
      已补充截图,另外今天提交了一个新版本,用 try-catch 暂时把这个问题隐藏起来了:
      08-18
      回复
登录 后发表内容
问题标签