微信小程序全局变量的监听
当一个文件在后台下载,我们需要当文件下载成功后,自动进行一些行为(弹出一个下载成功的弹窗或者刷新当前页面);
// app.js App({ globalData: { userInfo: null }, watchProperty: function (method = function () {}, atrrs, value ) { var obj = this.globalData; Object.defineProperty(obj, atrrs, { configurable: true, enumerable: true, set: function (_value) { value = _value; method(value); }, get: function () { return value; } }) }, })
参数method为我们希望该值改变后所执行的函数,
atrrs为我们想要监听的全局变量,
value为全局变量的初始值。
其他页面的使用
onLoad() { const app = getApp(); app.watchProperty(this.updata, new_atrrs, old_value); //下面的定时器可以在其他页面使用,例如其他页面的异步操作完成后,改变app.globalData.new_atrrs值,那么就会触发这个页面的updata()函数 setTimeout(() => { app.globalData.new_atrrs = new_value },5000); }, updata() { console.log(app.globalData.new_atrrs); const pages = getCurrentPages(); const perpage = pages[pages.length - 1]; //页面刷新 // perpage.onLoad({ // id: //传入页面参数 // }); //perpage便是该页面的Page实例,perpage === this perpage.one(perpage);//给函数one传入Page实例的值,那么我们便可以使用该页面的任意函数 }, one(_this) {//通过_this接受this值,解决this指向问题 _this.setData({ one:0, two:1, three:0 }) console.log(_this.data.one);//=> 0 },
监听数据完成