收藏
回答

that.setData 无法赋值

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

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

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

3 个回答

  • 微云
    微云
    2019-01-02

    onShow

    2019-01-02
    有用 1
    回复 1
    • 2019-01-02

      onShow 同样没有效果

      2019-01-02
      回复
  • -zWing
    -zWing
    2019-01-03

    that指向了旧的实例了吧

    2019-01-03
    有用
    回复 1
    • 2019-01-04

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

      2019-01-04
      回复
  • 愿与愁
    愿与愁
    2019-01-02

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

    2019-01-02
    有用
    回复 8
    • 2019-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 语句会执行,但是下面赋值就不执行了

      2019-01-02
      回复
    • 愿与愁
      愿与愁
      2019-01-02

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

      2019-01-02
      回复
    • 2019-01-02回复愿与愁

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

      2019-01-02
      回复
    • 愿与愁
      愿与愁
      2019-01-02

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

      2019-01-02
      回复
    • 愿与愁
      愿与愁
      2019-01-02

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

      2019-01-02
      回复
    查看更多(3)
登录 后发表内容