使用场景:在开发中通常会遇到这样的场景:在一个新打开的页面中进行了某些操作后,原先打开的页面中的某些数据需要改变,而又不能刷新页面。这时候就要用到一个消息广播的功能,类似于iOS的 NSNotificationCenter。
作用:
方法定义
在小程序app.js中增加以下内容
_listen_fns: {},
noticeListen: function (key, callback) {
this._listen_fns[key] = this._listen_fns[key] ? this._listen_fns[key] : [];
this._listen_fns[key].push(callback);
},
noticePublish: function (key, data) {
var _listen_fns = this._listen_fns;
if (_listen_fns[key]) {
for (var i in _listen_fns[key]) {
if (typeof _listen_fns[key][i] == "function") {
try {
_listen_fns[key][i](data);
} catch (e) {
console.log("publish error");
}
}
}
}
}
使用方法
方法定义(在需要接收广播的页面)
// test 为定义的名称,data 为传值
app.noticeListen("test", function (data) {
console.log(data)
})
广播发布(在通知发起页面)
app.noticePublish("test", "message")
注:以上使用的app通常在页面中定义: var app = getApp()