要在其他页面监听小程序中 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
中值的变化,但过度使用这样的全局监听可能导致代码的维护性变差。建议根据实际需要谨慎使用全局监听功能,避免滥用。