微信小程序全局变量监听
需求:在任意一个页面上实时监听全局变量发生的改变。
第一步
- 新建 utils 文件夹,并在文件夹中新建
onEvent.js
文件。
var events = {};
function on(name, self, callback) {
var tuple = [self, callback];
var callbacks = events[name];
if (Array.isArray(callbacks)) {
callbacks.push(tuple);
}
else {
events[name] = [tuple];
}
}
function remove(name, self) {
var callbacks = events[name];
if (Array.isArray(callbacks)) {
events[name] = callbacks.filter((tuple) => {
return tuple[0] != self;
})
}
}
function emit(name, data) {
var callbacks = events[name];
if (Array.isArray(callbacks)) {
callbacks.map((tuple) => {
var self = tuple[0];
var callback = tuple[1];
callback.call(self, data);
})
}
}
exports.on = on;
exports.remove = remove;
exports.emit = emit;
第二步
- 在需要监听的页面引入
onEvent.js
文件,并加入以下代码。
const event = require('../../utils/onEvent.js');
...
...
onShow(){
event.on('DataChanged', this, function (Rx_data) {
console.log("接收数据发生改变");
this.setData({infos:app.globalData.info})
});
},
第三步
- 在数据改变页面加入以下代码。
const event = require('../../utils/onEvent.js');
...
event.emit('DataChanged', "wechat");
...
- Author: 未来可期
- Link: http://shansec.github.io/post/blog/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E5%85%A8%E5%B1%80%E5%8F%98%E9%87%8F%E7%9B%91%E5%90%AC/
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.