微信小程序--监听对象属性变化

本以为小程序会跟vue差不多有像watch一类的方法,好吧并没有。百度了很多,看了很多大神写的案例。奈何天资不太行,虽然效果有了,但还是不太懂。
app.js

//监听属性值函数
  watch:function(obj,val,method){
    Object.defineProperty(obj,val,{
      configurable:true,
      enumerable:true,
      set:function(nval){
          val = nval;
          method(nval)
      },
      get:function(){
        return val
      }
    })
  },

其实主要的就是js的原生方法 Object.defineProperty,可以参考

https://blog.csdn.net/Calla_Lj/article/details/86692537?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159550092419724835850954%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159550092419724835850954&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~rank_ctr_v4-1-86692537.ecpm_v1_rank_ctr_v4&utm_term=object.defineproperty%E5%8E%9F%E7%90%86&spm=1018.2118.3001.4187

个人觉得写的很好,至少我能看懂 = -=。
然后就是在需要的页面调用了,像下面这样。

data: {
    obj:{
      name:'cyang'
    }
  },
   onLoad: function (options) {
    //调用app.js的监听函数
    getApp().watch(this.data.obj,'name',this.getVal);
    let oj = 'obj.name';
    this.setData({
      [oj]:'haha'
    })
  },
  getVal:function(name){
    //打印新值
    console.log("新name",name)  haha
  },

至此就完成了,不多bb,继续学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值