收藏
回答

that.setData 无法赋值

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 客户端 6.5.3 2.00

onLoad里面使用that.setData赋值,一开始可以,当离开页面返回本页面之后就无法赋值了

最后一次编辑于  01-02  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • 微云
    微云
    01-02

    onShow

    01-02
    赞同 1
    回复 1
    • 海
      01-02

      onShow 同样没有效果

      01-02
      回复
  • 抬头忘了谁
    抬头忘了谁
    01-02

    onLoad是页面加载时,返回到页面是onShow。可以先用console.log或者debugger看看执行没有。再者就可能是你的that的问题,建议在作用域没问题的情况用this

    01-02
    赞同
    回复 8
    • 海
      01-02

      onShow: function() {

      var that = this

      client.onMessageArrived = function(msg) {

      var t = JSON.parse(msg.payloadString)

      var color = t.color

      if (color == 'black'){

      that.setData({

          color: 'green'

      })

      }else{

      that.setData({

          color: 'black'

      })

      }

      if 语句会执行,但是下面赋值就不执行了

      01-02
      回复
    • 抬头忘了谁
      抬头忘了谁
      01-02

      你的页面是不是卸载后,重新进入了。因为在你页面unOnload(卸载)时,当时的that就已经是卸载前的页面实例了。

      01-02
      回复
    • 海
      01-02回复抬头忘了谁

      我是点击左上角的返回按键返回到其他页面的,然后其他页面点击进入的

      01-02
      回复
    • 抬头忘了谁
      抬头忘了谁
      01-02

      这样是不行的,左上角的返回会卸载页面,所以当that.setData时,你的that页面已经被卸载了。你需要把状态存在App中,然后在onShow里读取全局状态,然后判断状态,进行setData。

      01-02
      回复
    • 抬头忘了谁
      抬头忘了谁
      01-02

      学过java的话你应该知道new A() != new A()。你每次打开一个新的页面,虽然都是一个A页面,但他们不同..

      01-02
      回复
    查看更多(3)
  • -zWing
    -zWing
    01-03

    that指向了旧的实例了吧

    01-03
    赞同
    回复 1
    • 海
      01-04

      应该是,下面有回答已经解决了。

      01-04
      回复