收藏
回答

eventChannel真机调试不能传递信息?

需要在页面间传递信息,使用:

发送页面源码:

  let index = e.currentTarget.dataset.index

console.log('jump to season:', index)

wx.navigateTo({url: '../season/season', success:function(res){res.eventChannel.emit('sendSeasonNo', index)}})

接收页面源码:

  var tmp

eventChannel.on('sendSeasonNo', function(data){tmp=data})

开发工具调试正常,但是真机调试,在执行完eventChannel.on之后,tmp还是undefined。


回答关注问题邀请回答
收藏

3 个回答

  • 铭锋科技
    铭锋科技
    2019-12-12

    谢邀,解决了就好

    2019-12-12
    有用
    回复
  • Vayne Yax
    Vayne Yax
    2019-12-11

    我和你遇到的问题一模一样,在接受页面的 onshow 中,代码执行的顺序除了问题,先执行了后面的业务逻辑,然后才执行获取上一页传过来的数据这个动作,导致后面的业务逻辑代码获取不到数据,然后报错。不知道你最后怎么解决的

    2019-12-11
    有用
    回复 1
    • 曲欣
      曲欣
      2020-01-09
      增加了 Promise 机制,代码如下,只有tmp被赋值之后,再执行操作:
          new Promise((resolve, reject) => {
            eventChannel.on('sendSeasonNo', function (data) {
              tmp = data
              resolve(tmp)
            })
          }).then((res) => {
            this.setData({ seasonNo: tmp })
            this.setData({ episodeList: this.data.playList[tmp].episodeList })
            console.log('index:', tmp, this.data.seasonNo)
            wx.setNavigationBarTitle({ title: this.data.playList[tmp].seasonName })
          })
      2020-01-09
      回复
  • 拾忆
    拾忆
    2019-10-15

    emit 接收的参数是一个对象


    2019-10-15
    有用
    回复 17
    • 曲欣
      曲欣
      2019-10-15
      不好意思,没有听明白。emit发送是对象,是说接收代码有些要求?为什么这个代码调试工具工作正常,只有真机调试才不能传递?
      2019-10-15
      回复
    • 拾忆
      拾忆
      2019-10-15回复曲欣
      弄个的代码片段吧 ,
      我是看你的 emit 第二个参数index 应该 emit("事件名称",{ data:index}), 接收 on("事件名称",function(data){console.log("data")})
      2019-10-15
      回复
    • 曲欣
      曲欣
      2019-10-15
      代码片段搞好了,突然发现代码片段不能真机调试,只有真机调试才报错:( 有没有别的方法?
      2019-10-15
      回复
    • 拾忆
      拾忆
      2019-10-16回复曲欣
      代码片段添加开发者就可以预览 真机调试了
      2019-10-16
      回复
    • 曲欣
      曲欣
      2019-10-16回复拾忆
      代码片段,帮忙看下,多谢。https://developers.weixin.qq.com/s/2KGwC9mi7icG
      2019-10-16
      回复
    查看更多(12)
登录 后发表内容
问题标签