收藏
回答

eventChannel.on()内无法调用自己的方法或者this.SetData()

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug eventChannel 微信安卓客户端 6.5.3 2.0.0

https://developers.weixin.qq.com/miniprogram/dev/api/route/EventChannel.on.html

这里可以打印出接收的参数,却没有办法调用this.setData()保存下来,请问怎么解决呢?调用that.setData也一样

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

7 个回答

  • TNT
    TNT
    2020-02-17

    这是this指向不对的问题。

    三个方法。

    第一 let that = this 写在你的这个on监听之外。

    第二个 写成箭头函数eventChannel.on(‘questions’, (data) => {console.log(data)})

    第三个 看下是否可以 在on监听最后加个bind(this)

    2020-02-17
    有用 5
    回复 3
    • 恒勇-Samur
      恒勇-Samur
      2020-02-17
      解决了,谢谢!
      2020-02-17
      回复
    • 杨成锦
      杨成锦
      2021-04-11
      感谢老哥!
      2021-04-11
      回复
    • welldo
      welldo
      2021-12-14
      太牛逼辣!!感谢
      2021-12-14
      回复
  • XBSS丶
    XBSS丶
    2021-01-07

    这里有个比我菜的,咱们做朋友吧

    2021-01-07
    有用 1
    回复
  • huangzhao
    huangzhao
    2020-04-23

    真菜,改成箭头函数

    2020-04-23
    有用 1
    回复
  • 铅笔画不出蜡笔的味道
    铅笔画不出蜡笔的味道
    2020-02-17
    onLoad:function(options){
        let that = this
        然后内容不变,原来所有的this换成that
    }
    
    2020-02-17
    有用 1
    回复
  • 凝碧
    凝碧
    2020-04-14

    这是js的基本知识吧,改变this指针,有三种方法,这里适用bind

    2020-04-14
    有用
    回复
  • 路
    2020-02-23

    传值一直失败,传不了报错this.getOpenerEventChannel is not a function;怎么解决?

    2020-02-23
    有用
    回复
  • 恒勇-Samur
    恒勇-Samur
    2020-02-17

    还是一样的,不知道为什么呢

    2020-02-17
    有用
    回复 2
    • 鲸鱼
      鲸鱼
      2020-07-28
      你先把js学好吧~建议看看this指向的文章
      2020-07-28
      回复
    • Lan丶
      Lan丶
      2021-12-22
      let that = this 写在on外面
      2021-12-22
      回复
登录 后发表内容
问题标签