收藏
回答

小程序组件中监听全局变量,方法中的this指向为undefined

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 2.17.0 2.17.0

  这是app.js

globalData: {
    userInfonull,
    loginModetrue,
  },
  //app 全局属性监听
  watchfunction (method{
    var obj = this.globalData;
    Object.defineProperty(obj, "userInfo", {  //这里的 data 对应 上面 globalData 中的 data
      configurabletrue,
      enumerabletrue,
      setfunction (value{  //动态赋值,传递对象,为 globalData 中对应变量赋值
        this._showPictureDetail = value.showPictureDetail;
        this._pictureTime = value.pictureTime;
        this._pictureAddress = value.pictureAddress;
        method(value);
      },
      getfunction () {  //获取全局变量值,直接返回全部
        return this.globalData;
      }
    })
  }

这是组件监听

   created() {
    getApp().watch(this.watchBack)
  },   
  watchBackfunction (value{  
        console.log(this) // 这里的this打印出来是undefined
        this.setData({
          loginModefalse
        })
      },
回答关注问题邀请回答
收藏

3 个回答

  • lee
    lee
    2023-04-03

    在组件创建全局变量,在attached函数赋值

    var that_ = null
    
    
    that_ = this
    
    2023-04-03
    有用
    回复
  • 孤舟蓑笠翁
    孤舟蓑笠翁
    2021-06-07

    放attached里运行试试

    2021-06-07
    有用
    回复 1
    • lcoker
      lcoker
      2021-06-07
      任然是undefined
      2021-06-07
      回复
  • lcoker
    lcoker
    2021-06-07

    在页面中监听正常,只有在自定义组件中监听会出现问题

    2021-06-07
    有用
    回复 3
    • lcoker
      lcoker
      2021-06-07
      已经解决了,在回调方法里面传入this就可以了
      2021-06-07
      回复
    • s1vie
      s1vie
      2021-09-03回复lcoker
      传入this,在真机调试并没有修改到页面组件的值啊
      2021-09-03
      回复
    • 小香猪🐷
      小香猪🐷
      2022-09-20回复lcoker
      怎么传的呀
      2022-09-20
      回复
登录 后发表内容