1.app.js文件中添加如下代码
watchCallBack: {}, watchingKeys: [], setGlobalData(data) { // 为了便于管理,应通过此方法修改全局变量 Object.keys(data).map(key => { this.globalData[key] = data[key] }) console.log('mutation', data); wx.setStorageSync('store', this.globalData)// 加入缓存 }, $watch(key, cb) { this.watchCallBack = Object.assign({}, this.watchCallBack, { [key]: this.watchCallBack[key] || [] }); this.watchCallBack[key].push(cb); if (!this.watchingKeys.find(x => x === key)) { const that = this; this.watchingKeys.push(key); let val = this.globalData[key]; Object.defineProperty(this.globalData, key, { configurable: true, enumerable: true, set(value) { const old = that.globalData[key]; val = value; that.watchCallBack[key].map(func => func(value, old)); }, get() { return val } }) } }在需要监听全局变量的文件中(如index.js)使用如下代码
show() { app.$watch('要监听的变量名', (val, old) => { // 处理全局变量 })}