本以为小程序会跟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.youkuaiyun.com/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,继续学习。