小程序(三十六)watch

首先小程序是没有watch的。我们要实现它。
需要先了解defineProperty相关知识。
参考资料:https://www.jianshu.com/p/381357f2d443

app.js

App({
  onLaunch: function () {
  },
  // 这里这么写,是要在其他界面监听,而不是在app.js中监听,而且这个监听方法,需要一个回调方法。
  watch: function (method) {
    var obj = this.globalData;
    Object.defineProperty(obj, "name", {
      configurable: true,
      enumerable: true,
      set: function (value) {
        this.temp_data = value;
        // this.name = value;
        console.log('是否会被执行2')
        method(value);
      },
      get: function () {
        return this.temp_data;
        // 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.name的时候,这里就会执行。
        // return this.name
      }
    })
  },
  globalData: {
    userInfo: null,
    name: 'msr'
  }
})


change

Page({
  data: {
  },
  onLoad: function (options) {
    console.log(getApp().globalData.name)
    getApp().watch(this.watchBack)
  },
  watchBack: function (name) {
    console.log('this.name==' + name)
  }
  ,change(){
      getApp().globalData.name = '123'
  }
})

你可能感兴趣的:(小程序(三十六)watch)