本文主要是介绍小程序页面监听app.js中globalData中的数据变化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
App({globalData: {instrumentInfo: {deviceLists: [],...},netType: '',},// 全局监听globalData的某个属性变化,并通知其他页面界面显示改变// key globalData中的属性值 okey 当globalData中的属性值为对象时需传入 method 值变化后的回调函数watch: function(key, okey, method) {// this.globalData里面的对象if (okey) {var obj = this.globalData[okey];}else{var obj = this.globalData;}//加个前缀生成隐藏变量,防止死循环发生let ori = obj[key]; //obj[key]这个不能放在Object.defineProperty里if (ori) { //处理已经声明的变量,绑定处理method(ori);}Object.defineProperty(obj, key, {configurable: true,enumerable: true,set: function(value) {this['_' + key] = value;method(value);},get: function() {// 在其他界面调用key值的时候,这里就会执行。if (typeof this['_' + key] == 'undefined') {if (ori) {//这里读取数据的时候隐藏变量和 globalData设置不一样,所以要做同步处理this['_' + key] = ori;return ori;} else {return undefined;}} else {return this['_' + key];}}})},})
在页面中监听deviceLists和netType值得变化
app.watch('deviceLists', 'instrumentInfo', (v) => {console.log(v); //v即是变化的值})app.watch('netType', '', (val) => {console.log(v); //v即是变化的值})
这篇关于小程序页面监听app.js中globalData中的数据变化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!