微信小程序全局变量监听

微信小程序全局变量监听

需求:在一个页面上能实时监听全局变量数据发生的改变。

解决思路:通过注册监听回调函数的方式,同时在改变数据里通知监听方。

微信小程序提供有官方的api可以使用
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/extended/utils/computed.html

也可使用以下方法。

对监听事件进行封装:
  • 新建文件..\utils\onEvent
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;
  • 在需要监听的页面
var event = require('../../utils/onEvent.js');
...
...
    onShow(){
        event.on('DataChanged', this, function (Rx_data) {
            console.log("接收数据发生改变");
            this.setData({infos:app.globalData.info})
        });
    },
  • 在数据改变页面
var event = require('../../utils/onEvent.js');
...
event.emit('DataChanged', "test");
...

可以实现页面间的数据交互或者动态更新全局数据。
微信小程序全局变量监听_第1张图片

你可能感兴趣的:(微信小程序,javascript,小程序)