小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 小程序如何在其他页面监听globalData中值的变化?

小程序如何在其他页面监听globalData中值的变化?

要在其他页面监听小程序中 globalData 中值的变化,您可以使用 jQuery 的 watch 方法或使用 Object.defineProperty 方法来实现。

以下是使用 Object.defineProperty 的示例代码:

首先,在 app.js 中定义 globalData 并创建一个 watcher 方法:

App({
  globalData: {
    valueToWatch: '初始值',
  },
  watcher: function() {}, // 创建一个空的监听器函数
})

然后,在需要监听变化的页面中,假设是 index.js,可以在 onLoad 生命周期函数中定义一个 watcher 函数,并调用 Object.defineProperty 来监听 globalData 中值的变化:

const app = getApp();

Page({
  onLoad: function() {
    this.watcher(); // 在此处调用 watcher 函数
  },
  watcher: function() {
    let that = this;
    Object.defineProperty(app.globalData, 'valueToWatch', {
      configurable: true,
      enumerable: true,
      set: function(value) {
        console.log('值发生变化:', value);
        that.setData({
          watchedValue: value,
        }); // 将变化后的值存储到页面的 data 中
      },
    });
  },
})

在上述示例中,globalData 对象中的 valueToWatch 属性被监听,当其值发生变化时,在控制台输出变化的值,并将变化后的值存储到当前页面的 data 中的 watchedValue 属性中。您可以根据实际需求自定义处理变化的逻辑。

请注意,虽然以上代码可以实现监听 globalData 中值的变化,但过度使用这样的全局监听可能导致代码的维护性变差。建议根据实际需要谨慎使用全局监听功能,避免滥用。

联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了