小程序(三十六)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'
  }
})


<view bindtap="change">change</view>

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'
  }
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容