当前位置: 首页 > news >正文

PHP可以实现一对多,微信小程序实现一对多发消息

微信小程序中实现一对多发消息详解及实例代码

微信小程序中各个界面之间的传值和通知比较蛋疼。所以模仿了iOS中的通知中心,在微信小程序中写了一套类似的通知中心。

通知中心可以做到:1对多发消息,传递object。使用十分简洁。

使用时,在需要接收消息的界面注册一个通知名。然后在需要发消息的界面post这个通知名就可以了。可以在多个界面注册同一个通知名。这样就可以1对多发消息。

使用方法:

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(name,content){

console.log("接收到了通知:",name, content);

},

})

4: 发出通知的page.js中

PageB.js 任意函数

var app = getApp();

Page({

anyFunction:function(){

app.notificationCenter.post("通知名称",{

//任意通知object

}) ;

},

})

实现:

var notificationCenter = {

notificationCenter:{},

// 向通知中心注册一个监听者。

// name: 监听的通知名称

// observer: 监听者

// action: 监听者收通知时调用的方法名,

// func: 监听者收到通知时调用的函数,

// 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;

},

// 从通知中心移除一个监听者

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

var obj = objects[idx];

if (obj.observer == observer){

object = obj;

break;

}

}

if (object){

objects.splice(idx,1);

}

center[name] = objects;

},

// 通过通知中心发出通知

// name: 通知名称

// notification: 通知内容

post:function(name,notification){

if (!name) return;

console.log("准备发出通知:",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," 个监听者发出通知:",name);

}

}

function center(){

return notificationCenter;

}

module.exports.center = center;

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多微信小程序实现一对多发消息相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

相关文章:

  • v820w安装linux系统,Linux系统基础-管理之用户、权限管理
  • linux命令seq,Linux 中seq 命令的用法
  • linux图形界面进入etc,怎么从Linux字符界面切换到图形界面
  • 安装了linux启动还是windows,安装完linux后 windows无法启动
  • Linux编译brpc没有输出库,brpc例子编译失败
  • linux环境下压缩文件,经常用到的五种Linux环境中的压缩包命令
  • linux程序库分为,Linux的库
  • 2005年linux手机系统,三系统五大平台 05年22款智能手机横评
  • linux挂起无法唤醒屏幕,linux 出现挂起后无法开启
  • 安徽大学C语言作业4答案,安徽大学C语言实验平台答案
  • linux 7 unzip,CentOS 7实现离线下载
  • c语言中截取字符串 sub,c中substring的用法
  • vs code 运行C语言并调试,vscode配置远程开发环境并远程调试运行C++代码的教程
  • c语言main重复定义,求救 我的程序在VC++6.0 里组建时说main函数里重复定义了,可我找...
  • 单片机数据传输的奇偶校c语言,单片机与PC机的串口通信课程设计
  • $translatePartialLoader加载失败及解决方式
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • docker python 配置
  • Druid 在有赞的实践
  • go语言学习初探(一)
  • IOS评论框不贴底(ios12新bug)
  • Redux 中间件分析
  • RxJS: 简单入门
  • vagrant 添加本地 box 安装 laravel homestead
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 代理模式
  • 多线程 start 和 run 方法到底有什么区别?
  • 回顾 Swift 多平台移植进度 #2
  • 来,膜拜下android roadmap,强大的执行力
  • 配置 PM2 实现代码自动发布
  • 前端学习笔记之观察者模式
  • 日剧·日综资源集合(建议收藏)
  • 通信类
  • 无服务器化是企业 IT 架构的未来吗?
  • 线上 python http server profile 实践
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ionic异常记录
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​520就是要宠粉,你的心头书我买单
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (SpringBoot)第二章:Spring创建和使用
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (九)c52学习之旅-定时器
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转) ns2/nam与nam实现相关的文件
  • **PHP分步表单提交思路(分页表单提交)
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET 2.0中新增的一些TryGet,TryParse等方法