微信小程序中實現(xiàn)一對多發(fā)消息

微信小程序中各個界面之間的傳值和通知比較蛋疼描馅。所以模仿了iOS中的通知中心竖伯,在微信小程序中寫了一套類似的通知中心蜡镶。

通知中心可以做到:1對多發(fā)消息茫舶,傳遞object。使用十分簡潔刹淌。

使用時饶氏,在需要接收消息的界面注冊一個通知名。然后在需要發(fā)消息的界面post這個通知名就可以了有勾≌钇簦可以在多個界面注冊同一個通知名。這樣就可以1對多發(fā)消息蔼卡。

使用方法:
1:在app.js中引用notification.js

var notificationCenter = require('/utils/notification.js'); //這里請改為你的絕對路徑

2:在app.js中添加:

App({
   onLaunch: function (){
          this.notificationCenter = notificationCenter.center();
    },
    notificationCenter:null,
})

3: 接收通知的page.js中注冊
PageA.js:

var app = getApp();
Page({
  onLoad:function(options){
  app.notificationCenter.register("一個通知名稱",this,"didReceviceAnyNotification");
  },
  didReceviceAnyNotification:function(notification){
    console.log("接收到了通知:",notification);

    var _this = notification._this; //不要直接使用 this
    var name = notification.name;
  },
})

4: 發(fā)出通知的page.js中
PageB.js 任意函數(shù)

var app = getApp();
Page({
  anyFunction:function(){
    app.notificationCenter.post("通知名稱",{
        //任意通知object
    })   ;
  },
})

實現(xiàn): github: https://github.com/developforapple/wxappNotificationCenter
notification.js

var notificationCenter = {

notificationCenter:{},

// 向通知中心注冊一個監(jiān)聽者喊崖。
// name: 監(jiān)聽的通知名稱
// observer: 監(jiān)聽者
// action: 監(jiān)聽者收通知時調(diào)用的方法名,
// func: 監(jiān)聽者收到通知時調(diào)用的函數(shù)雇逞,
// action func 2選1
register:function(name,observer,action,func){
    if (!name || !observer) return;
    if (!action && !func) return;

    console.log("注冊通知:",name,observer);

    var center = this.notificationCenter;
    var objects = center[name];
    if (!objects){
        objects = [];
    }
    this.remove(name,observer);
    objects.push({
        observer:observer,
        action:action,
        func:func
    });
    center[name] = objects;
},
// 從通知中心移除一個監(jiān)聽者
remove:function(name,observer){
    if (!name || !observer) return;

    var center = this.notificationCenter;
    var objects = center[name];
    if (!objects){
        return;
    }

    var idx;
    var object;
    for(idx = 0;idx<objects.length;idx++){
        var obj = objects[idx];
        if (obj.observer == observer){
        object = obj;
        break;
        }
    }
    if (object){
        objects.splice(idx,1);
    }
    center[name] = objects;
},
// 通過通知中心發(fā)出通知
// name: 通知名稱
// notification: 通知內(nèi)容
post:function(name,notification){
    if (!name) return;

    console.log("準備發(fā)出通知:",name,notification);

    var center = this.notificationCenter;
    var objects = center[name];
    if (!objects){
        objects = [];
    }
    objects.forEach(function(object){
        var observer = object.observer;
        var action = object.action;
        var func = object.func;

        if (observer && action){
            func = observer[action];
        }
        func(notification);
    });

    console.log("完成向 ",objects.length," 個監(jiān)聽者發(fā)出通知:",name);
}
}

function center(){
    return notificationCenter;
}

module.exports.center = center;
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荤懂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子塘砸,更是在濱河造成了極大的恐慌节仿,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掉蔬,死亡現(xiàn)場離奇詭異廊宪,居然都是意外死亡,警方通過查閱死者的電腦和手機女轿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門箭启,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛉迹,你說我怎么就攤上這事傅寡。” “怎么了婿禽?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵赏僧,是天一觀的道長。 經(jīng)常有香客問我扭倾,道長淀零,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任膛壹,我火速辦了婚禮驾中,結果婚禮上唉堪,老公的妹妹穿的比我還像新娘。我一直安慰自己肩民,他們只是感情好唠亚,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著持痰,像睡著了一般灶搜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上工窍,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天割卖,我揣著相機與錄音,去河邊找鬼患雏。 笑死鹏溯,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的淹仑。 我是一名探鬼主播丙挽,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匀借!你這毒婦竟也來了颜阐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤吓肋,失蹤者是張志新(化名)和其女友劉穎瞬浓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓬坡,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡猿棉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屑咳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萨赁。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兆龙,靈堂內(nèi)的尸體忽然破棺而出杖爽,到底是詐尸還是另有隱情,我是刑警寧澤紫皇,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布慰安,位于F島的核電站,受9級特大地震影響聪铺,放射性物質(zhì)發(fā)生泄漏化焕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一铃剔、第九天 我趴在偏房一處隱蔽的房頂上張望撒桨。 院中可真熱鬧查刻,春花似錦、人聲如沸凤类。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谜疤。三九已至佃延,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夷磕,已是汗流浹背苇侵。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留企锌,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓于未,卻偏偏與公主長得像撕攒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烘浦,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容