微信小程序:data属性变化监听---使用篇
源码的简单描述:看源码前先看思路如下:
源码一顿铺垫就是为了识别哪些属性要监听,
将要监听的属性值,key,回调逻辑===>传给Object.defineProperty(data,key,{…}):
(PS:如果代码写死哪几个属性要监听,直接用这个方法就可以监听,10行代码+每个属性的代码)
注意:官方文档说Object.defineProperty是耗费性能的,按需接入就行,别把整个data都写上
使用
- 将源码watch.js放到utils中,app引入源码:
`const watch = require("./utils/watch");`
- app.js中创建方法,用来被index.js调用,从而调用watch.js的方法:
setWatcher(page) { // 接收index.js传过来的data对象和watch对象
watch.setWatcher(page)
},
- index.js中调用方法传入当前page开始监听:
getApp().setWatcher(this); // 设置监听器
- index.js中创建方法,用于回调执行监听变化后的逻辑:
watch: {
name: function (newValue,data) {
console.log(newValue); // name改变时,调用该方法输出新值。
console.log(data) //data和newValue的值一样
}
}
更改数据,就会触发index.js中watch方法指定属性的逻辑:如上面的name属性
thia.data.name=''jjj
执行====>
'jjj'
'jjj'
就是index.js的watch方法回调逻辑