美文网首页
设置监听器watcher

设置监听器watcher

作者: DTripper | 来源:发表于2020-11-10 10:26 被阅读0次
//app.js
App({
  /**
   * 设置监听器
   */
  setWatcher(data, watch) { // 接收index.js传过来的data对象和watch对象
    Object.keys(watch).forEach(v => { // 将watch对象内的key遍历
      this.observe(data, v, watch[v]); // 监听data内的v属性,传入watch内对应函数以调用
    })
  },

  /**
   * 监听属性 并执行监听函数
   */
  observe(obj, key, watchFun) {
    var val = obj[key]; // 给该属性设默认值
    Object.defineProperty(obj, key, {
      configurable: true,
      enumerable: true,
      set: function (value) {
        val = value;
        watchFun(value, val); // 赋值(set)时,调用对应函数
      },
      get: function () {
        return val;
      }
    })
  }
})

使用

//home.js
Page({
   data: {
      person:'god'
   },
   onLoad(options){
      app.setWatcher(this.data, this.watch); // 设置监听器
    },
    watch: {
      person: function (n) {}
    }
})

相关文章

网友评论

      本文标题:设置监听器watcher

      本文链接:https://www.haomeiwen.com/subject/ifwdbktx.html