小程序
小游戏
企业微信
微信支付
扫描小程序码分享
我有一个需求 要时时获取消息数量 然后赋值给自定义tabbar的组件里面渲染 我把变量存在了app.js里面
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
app.js页面消息数量变化后发个广播给自定义组件,自定义组件开始监听接收消息数量。
/* 小程序广播组件 */ const broadcast = { // 通过调用 broadcast.on 注册事件。其他页面都可以通过调用 broadcast.fire 触发该事件 // 参数说明:如果 isUniq 为 true,该注册事件将唯一存在;如果值为 false或者没有传值,每注册一个事件都将会被存储下来 on: function(name, fn, isUniq) { this._on(name, fn, isUniq, false) }, // 通过调用 broadcast.once 注册的事件,在触发一次之后就会被销毁 once: function(name, fn, isUniq) { this._on(name, fn, isUniq, true) }, _on: function(name, fn, isUniq, once) { var eventData eventData = broadcast.data var fnObj = { fn: fn, once: once } if (!isUniq && eventData.hasOwnProperty(name)) { eventData[name].push(fnObj) } else { eventData[name] = [fnObj] } return this }, // 触发事件 // 参数说明:name 表示事件名,data 表示传递给事件的参数 fire: function(name, data, thisArg) { var fn, fnList, i, len thisArg = thisArg || null fnList = broadcast.data[name] || [] if (fnList.length) { for (i = 0, len = fnList.length; i < len; i++) { fn = fnList[i].fn fn.apply(thisArg, [data, name]) if (fnList[i].once) { fnList.splice(i, 1) i-- len-- } } } return this }, data: {} } module.exports = broadcast
// app.js,引入上述的js文件,发送广播通知 broadcast.fire('事件名', data) // 发送的事件名及更改的值。 // 页面监听接收通知 broadcast.on('事件名', (data) => { // 执行逻辑,data为app.js传递过来的 });
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
Component({
lifetimes: {
attached() {
broadcast.on('事件名', (data) => {
this.setData({
reddot: data // data为app.js传递过来的消息数量
})
});
}
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
app.js页面消息数量变化后发个广播给自定义组件,自定义组件开始监听接收消息数量。
/* 小程序广播组件 */ const broadcast = { // 通过调用 broadcast.on 注册事件。其他页面都可以通过调用 broadcast.fire 触发该事件 // 参数说明:如果 isUniq 为 true,该注册事件将唯一存在;如果值为 false或者没有传值,每注册一个事件都将会被存储下来 on: function(name, fn, isUniq) { this._on(name, fn, isUniq, false) }, // 通过调用 broadcast.once 注册的事件,在触发一次之后就会被销毁 once: function(name, fn, isUniq) { this._on(name, fn, isUniq, true) }, _on: function(name, fn, isUniq, once) { var eventData eventData = broadcast.data var fnObj = { fn: fn, once: once } if (!isUniq && eventData.hasOwnProperty(name)) { eventData[name].push(fnObj) } else { eventData[name] = [fnObj] } return this }, // 触发事件 // 参数说明:name 表示事件名,data 表示传递给事件的参数 fire: function(name, data, thisArg) { var fn, fnList, i, len thisArg = thisArg || null fnList = broadcast.data[name] || [] if (fnList.length) { for (i = 0, len = fnList.length; i < len; i++) { fn = fnList[i].fn fn.apply(thisArg, [data, name]) if (fnList[i].once) { fnList.splice(i, 1) i-- len-- } } } return this }, data: {} } module.exports = broadcast
// app.js,引入上述的js文件,发送广播通知 broadcast.fire('事件名', data) // 发送的事件名及更改的值。 // 页面监听接收通知 broadcast.on('事件名', (data) => { // 执行逻辑,data为app.js传递过来的 });
Component({
lifetimes: {
attached() {
broadcast.on('事件名', (data) => {
this.setData({
reddot: data // data为app.js传递过来的消息数量
})
});
}
}
})