ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

小程序页面监听app.js中globalData中的数据变化

2026/9/13 4:39:58 拓冰建站 浏览量
小程序页面监听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即是变化的值})