评论

微信小程序页面监听全局变量的改变

微信小程序页面监听全局变量的改变

app.js------------------------------------------------

watch: function (method) {

//监听函数

    var obj = this.globalData

    Object.defineProperty(obj, 'clock', {

      configurable: true,

      enumerable: true,

      set: function (value) {

        this._name = value;

        method(value);

      },

      get: function () {

        return this._name

      }

    })

  },

  globalData: {

clock:""//要监听的变量

  }

————————————————

index.js-------------------------------

onLoad:function(options){

    getApp().watch(this.watchBack)//注册监听

  },

  watchBack: function (value){

//要执行的方法

    this.setData({

      clock: value

    })

}



亲测可用。

但是文档上没有不知道为啥,如果有坑请留言哈。


最后一次编辑于  2021-04-28  
点赞 3
收藏
评论

3 个评论

  • 捌玖
    捌玖
    2021-06-16

    怎么样能清除 watch监听呢?

    2021-06-16
    赞同 1
    回复
  • Colin
    Colin
    2023-05-25

    这个只能在一个页面生效吗?多个页面调用报错了

    2023-05-25
    赞同
    回复
  • 一叶之秋
    一叶之秋
    2021-05-06

     watchBack: function (value){

    //要执行的方法

        this.setData({

          clock: value

        })

    这里面没法用this啊,打印报undefined,大佬怎么解决呀

    2021-05-06
    赞同
    回复 5
    • 中正
      中正
      2021-05-10
      解决了么,我也遇到这个问题了
      2021-05-10
      回复
    • 南佳
      南佳
      2021-06-15
      箭头函数 或 let that = this
      2021-06-15
      回复
    • 🎈
      🎈
      2021-08-25回复南佳
      用了箭头函数还是undefined,你是怎么用箭头函数的QAQ
      2021-08-25
      回复
    • 幽灵灬王
      幽灵灬王
      2021-12-05
      大佬们解决了吗,我也是报undefined,搜了好多资料找不到解决办法呀
      2021-12-05
      回复
    • 沉酿
      沉酿
      2023-02-16
      getApp().watch(this.watchBack.bind(this))
      2023-02-16
      回复
登录 后发表内容