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

发布于 6 年前作者 chao86554 次浏览最后编辑 6 年前来自 ask

  这是app.js

globalData: {
    userInfo: null,
    loginMode: true,
  },
  //app 全局属性监听
  watch: function (method) {
    var obj = this.globalData;
    Object.defineProperty(obj, "userInfo", {  //这里的 data 对应 上面 globalData 中的 data
      configurable: true,
      enumerable: true,
      set: function (value) {  //动态赋值,传递对象,为 globalData 中对应变量赋值
        this._showPictureDetail = value.showPictureDetail;
        this._pictureTime = value.pictureTime;
        this._pictureAddress = value.pictureAddress;
        method(value);
      },
      get: function () {  //获取全局变量值,直接返回全部
        return this.globalData;
      }
    })
  }

这是组件监听

   created() {
    getApp().watch(this.watchBack)
  },   
  watchBack: function (value) {  
        console.log(this) // 这里的this打印出来是undefined
        this.setData({
          loginMode: false
        })
      },
2 回复
jun87
jun871 楼5 年前

放attached里运行试试

umeng
umeng2 楼1 年前

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