admin 管理员组

文章数量: 1184232

小程序中如何实时监听app.js中globalData的数据变化

使用Object.defineProperty(obj, prop, desc)来进行发布订阅
obj 是需要定义属性的当前对象
prop 当前需要定义的属性名
desc 属性描述符

App({onLaunch: function () {let that = this// 在这里用定时器模拟网络请求的过程setTimeout(function(){that.globalData.chatList= '定时器推送的消息可以一直推送也能一直接收'},3000) },// 这里这么写,是要在其他界面监听,而不是在app.js中监听,而且这个监听方法,需要一个回调方法。watch(method){var obj = this.globalData;Object.defineProperty(obj,"chatList", {configurable: true,//描述属性是否配置,以及可否删除 false 时,不能删除当前属性,且不能重新配置当前属性的描述符(有一个小小的意外:true时,可以删除当前属性,可以配置当前属性所有描述符。enumerable: true,//描述属性是否会出现在for in 或者 Object.keys()的遍历中set: function (value) {this._chatList = value;console.log('是否会被执行2')method(value);},get:function(){// 可以在这里打印一些东西,然后在其他界面调用getApp().globalData.chatList的时候,这里就会执行。return this._chatList}})},globalData: {_chatList:'原记录'}
})// 然后在其他的page页面中的生命周期中实现
onLoad: function (options) {let that = this;getApp().watch(that.watchBack)},watchBack(chatList){console.log('监听到数据变化的值',chatList)}

本文标签: 小程序中如何实时监听appjs中globalData的数据变化