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

微信小程序中的 广播监听事件

定义 WxNotificationCenter.js  文件; 

/*** author: Di (微信小程序开发工程师)* organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)*               垂直微信小程序开发交流社区* * github地址: https://github.com/icindy/WxNotificationCenter* * for: 微信小程序通知广播模式类,降低小程序之间的耦合度* detail : http://weappdev.com/t/wxnotificationcenter/233*/
//   存放
var __notices = [];
var isDebug = true;
/*** addNotification* 注册通知对象方法* * 参数:* name: 注册名,一般let在公共类中* selector: 对应的通知方法,接受到通知后进行的动作* observer: 注册对象,指Page对象*/
function addNotification(name, selector, observer) {if (name && selector) {if(!observer){// ("addNotification Warning: no observer will can't remove notice");}var newNotice = {name: name,selector: selector,observer: observer};addNotices(newNotice);} else {}
}/*** 仅添加一次监听* * 参数:* name: 注册名,一般let在公共类中* selector: 对应的通知方法,接受到通知后进行的动作* observer: 注册对象,指Page对象*/
function addOnceNotification(name, selector, observer) {if (__notices.length > 0) {for (var i = 0; i < __notices.length; i++) {var notice = __notices[i];if (notice.name === name) {if (notice.observer === observer) {return;}}}}this.addNotification(name, selector, observer)
}function addNotices(newNotice) {// if (__notices.length > 0) {//     for (var i = 0; i < __notices.length; i++) {//         var hisNotice = __notices[i];//         //当名称一样时进行对比,如果不是同一个 则放入数组,否则跳出//         if (newNotice.name === hisNotice.name) {//             if (!cmp(hisNotice, newNotice)) {//                 __notices.push(newNotice);//             }//             return;//         }else{//             __notices.push(newNotice);//         }//     }// } else {// }__notices.push(newNotice);
}/*** removeNotification* 移除通知方法* * 参数:* name: 已经注册了的通知* observer: 移除的通知所在的Page对象*/function removeNotification(name,observer) {for (var i = 0; i < __notices.length; i++){var notice = __notices[i];if(notice.name === name){if(notice.observer === observer){__notices.splice(i,1);return;}}}}/*** postNotificationName* 发送通知方法* * 参数:* name: 已经注册了的通知* info: 携带的参数*/function postNotificationName(name, info) {if(__notices.length == 0){return;}for (var i = 0; i < __notices.length; i++){var notice = __notices[i];if(notice.name === name){notice.selector(info);}}}// 用于对比两个对象是否相等
function cmp(x, y) {// If both x and y are null or undefined and exactly the same  if (x === y) {return true;}// If they are not strictly equal, they both need to be Objects  if (! (x instanceof Object) || !(y instanceof Object)) {return false;}// They must have the exact same prototype chain, the closest we can do is  // test the constructor.  if (x.constructor !== y.constructor) {return false;}for (var p in x) {// Inherited properties were tested using x.constructor === y.constructor  if (x.hasOwnProperty(p)) {// Allows comparing x[ p ] and y[ p ] when set to undefined  if (!y.hasOwnProperty(p)) {return false;}// If they have the same strict value or identity then they are equal  if (x[p] === y[p]) {continue;}// Numbers, Strings, Functions, Booleans must be strictly equal  if (typeof(x[p]) !== "object") {return false;}// Objects and Arrays must be tested recursively  if (!Object.equals(x[p], y[p])) {return false;}}}for (p in y) {// allows x[ p ] to be set to undefined  if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {return false;}}return true;
};module.exports = {addNotification: addNotification,removeNotification: removeNotification,postNotificationName: postNotificationName,addOnceNotification: addOnceNotification
}

在需要的页面js中引入该文件

var WxNotificationCenter = require("../../utils/WxNotificationCenter.js");// 广播:WxNotificationCenter.postNotificationName('广播的名字', '');    // 监听var that = this;WxNotificationCenter.addNotification('广播的名字', that.'要调用的方法' , that);

相关文章:

微信小程序中的 广播监听事件

定义 WxNotificationCenter.js 文件&#xff1b; /*** author: Di (微信小程序开发工程师)* organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)* 垂直微信小程序开发交流社区* * github地址: https://github.com/icindy/WxNotificationCenter…...

Quickstart: MinIO for Linux

单节点部署教程 1.安装Minio服务端 //wget下载二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio //赋予权限 chmod x minio //将minio可执行文件移入usr/local/bin目录下&#xff0c;使得minio可以全局执行 sudo mv minio /usr/local/bin/ 2.启动Mi…...

Java中word转Pdf工具类

背景&#xff1a; 最近做的一个项目中&#xff0c;对于word转Pdf用的地方很多&#xff0c;特此记录 搭建总图&#xff1a; 代码部分&#xff1a; 1.需要的jar包&#xff1a; aspose-words-15.8.0-jdk16.jar 注&#xff1a;下载好这个jar包后&#xff0c;在项目的根目录新建一…...

【conda install】网络慢导致报错CondaHTTPError: HTTP 000 CONNECTION FAILED for url

⭐⭐问题&#xff1a; 部署安装环境经常会出现由于网络慢问题&#xff0c;导致conda安装不了库&#xff0c;报错如下&#xff1a; Solving environment: failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/…...

2023-8-28 图中点的层次(树与图的广度优先遍历)

题目链接&#xff1a;图中点的层次 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 100010;int h[N], e[N], ne[N], idx; int n, m; int q[N], d[N];void add(int a, int b) {e[idx] b, ne[idx] h[a], h…...

设计模式(一)

1、适配器模式 &#xff08;1&#xff09;概述 适配器中有一个适配器包装类Adapter&#xff0c;其包装的对象为适配者Adaptee&#xff0c;适配器作用就是将客户端请求转化为调用适配者中的接口&#xff1b;当调用适配器中的方法时&#xff0c;适配器内部会调用适配者类的方法…...

Prometheus关于微服务的监控

在微服务架构下随着服务越来越多,定位问题也变得越来越复杂,因此监控服务的运行状态以及针对异常状态及时的发出告警也成为微服务治理不可或缺的一环。服务的监控主要有日志监控、调用链路监控、指标监控等几种类型方式,其中指标监控在整个微服务监控中比重最高,也是实际生…...

CSS实现白天/夜晚模式切换

目录 功能介绍 示例 原理 代码 优化 总结 功能介绍 在网页设计和用户体验中&#xff0c;模式切换功能是一种常见的需求。模式切换可以为用户提供不同的界面外观和布局方案&#xff0c;以适应其个人偏好或特定环境。在这篇博客中&#xff0c;我们将探索如何使用纯CSS实现一…...

selenium实现输入数字字母验证码

思路 1. 登录url 2. 获取验证码坐标 3. 根据桌标截图验证码 4. 对验证码进行识别 5. 自动输入验证码 测试代码 import os import time from io import BytesIO from PIL import Image from selenium import webdriver from selenium.webdriver.common.by import By impo…...

Docker的运用

文章目录 一、 Docker介绍二、Docker常用命令三、Docker 部署微服务项目四、Docker 使用场景五、Docker模拟场景5.1 模拟部署Nacos5.2 模拟部署Mongodb5.3 模拟部署RabbitMQ 一、 Docker介绍 Docker是一种开源软件平台&#xff0c;用于在不同的操作系统&#xff08;如Windows、…...

在项目中快速搭建机器学习的流程

在软件开发领域&#xff0c;机器学习框架发挥着关键作用&#xff0c;为开发人员提供强大的人工智能工具、库和算法&#xff0c;以有效地利用机器学习的潜力。从本质上讲&#xff0c;机器学习使计算机能够从数据中学习并做出预测或决策&#xff0c;而无需明确编程。 机器学习框…...

计网-All

路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客路由基础-直连路由、静态路由与动态路由的概念_MikeVane-bb的博客-CSDN博客路由器的功能与路由表的查看_路由器路由表_傻傻小猪哈哈的博客-CSDN博客 直连路由就是路由器直接连了一个网段&#xff0c;他就…...

Rabbitmq的Federation Exchange

(broker 北京 ) &#xff0c; (broker 深圳 ) 彼此之间相距甚远&#xff0c;网络延迟是一个不得不面对的问题。有一个在北京的业务(Client 北京 ) 需要连接 (broker 北京 ) &#xff0c;向其中的交换器 exchangeA 发送消息&#xff0c;此时的网络延迟很小&#xff0c;(C…...

AIGC - 生成模型

AIGC - 生成模型 0. 前言1. 生成模型2. 生成模型与判别模型的区别2.1 模型对比2.2 条件生成模型2.3 生成模型的发展2.4 生成模型与人工智能 3. 生成模型示例3.1 简单示例3.2 生成模型框架 4. 表示学习5. 生成模型与概率论6. 生成模型分类小结 0. 前言 生成式人工智能 (Generat…...

如何优雅地创建一个自定义的Spring Boot Starter

优雅永不过时&#xff0c;希望看完本文&#xff0c;你会觉得starter如此优雅&#xff01; Spring Boot Starter是一种简化Spring Boot应用开发的机制&#xff0c;它可以通过引入一些预定义的依赖和配置&#xff0c;让我们快速地集成某些功能模块&#xff0c;而无需繁琐地编写代…...

Hbase--技术文档--单机docker基础安装(非高可用)

环境准备-docker 配置Linux服务器华为云耀云服务器之docker安装&#xff0c;以及环境变量安装 java &#xff08;虚拟机一样适用&#xff09;_docker配置java环境变量_一单成的博客-CSDN博客 说明&#xff1a; 本文章安装方式为学习使用的单体hbase项目。主要是学习&#xff…...

React 生命周期新旧对比

前言 React16.4版本之后使用了新的生命周期&#xff0c;它使用了一些新的生命周期钩子&#xff08;getDerivedStateFromProps、getSnapshotBeforeUpdate&#xff09;&#xff0c;并且即将废弃老版的3个生命周期钩子&#xff08;componentWillMount、componentWillReceiveProps…...

云计算存储类型

一、共享存储模式 NAS: ①一种专门用于存储和共享文件的设备&#xff0c;它通过网络连接到计算机或其他设备&#xff0c; 提供了一个中心化的存储解决方案 ②存储网络使用IP网络 &#xff0c;数据存储共享基于文件 ③本质上为:NFS和CIFS文件共享服务器 ④提供的不是一个磁盘块…...

javacv基础03-调用本机摄像头并截图保存到本地磁盘

基于基础02 的基础上对视频进行取帧保存 代码如下&#xff1a; package com.example.javacvstudy;/*** 本地摄像头截图*/import org.bytedeco.javacv.CanvasFrame; import org.bytedeco.javacv.FrameGrabber; import org.bytedeco.javacv.OpenCVFrameConverter; import org.b…...

Python读取Windows注册表的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

用AirScript脚本自动发送生日祝福邮件(极简版)

1. 为什么需要自动发送生日祝福邮件&#xff1f; 你有没有遇到过这样的情况&#xff1f;明明记得朋友的生日快到了&#xff0c;结果当天忙得团团转&#xff0c;等想起来的时候已经过了零点。或者更尴尬的是&#xff0c;设置了手机提醒&#xff0c;但看到通知后想着"等会儿…...

Stable Diffusion v1.5保姆级教程:输入英文描述,轻松生成专属AI画作

Stable Diffusion v1.5保姆级教程&#xff1a;输入英文描述&#xff0c;轻松生成专属AI画作 想体验AI绘画的魅力&#xff0c;却担心操作复杂、门槛太高&#xff1f;别担心&#xff0c;今天这篇教程就是为你准备的。我们将手把手教你使用 Stable Diffusion v1.5 这个经典的AI绘…...

深入解析UFS Clk Gate机制及其在低功耗设计中的应用

1. UFS Clk Gate机制入门指南 第一次听说UFS Clk Gate时&#xff0c;我也是一头雾水。直到在某个凌晨三点调试手机耗电问题时&#xff0c;才真正理解它的价值。简单来说&#xff0c;这就像你家里空调的智能开关——没人在房间时自动关闭&#xff0c;有人进来又立即开启&#xf…...

virtua在复杂场景中的应用:表格、聊天、日历等10种真实案例解析

virtua在复杂场景中的应用&#xff1a;表格、聊天、日历等10种真实案例解析 【免费下载链接】virtua A zero-config, fast and small (~3kB) virtual list (and grid) component for React. 项目地址: https://gitcode.com/gh_mirrors/vi/virtua virtua是一款零配置、轻…...

第19篇:多个PI控制器串联控制系统设计与参数整定调试实战

本篇前置知识&#xff1a;掌握自动控制基础原理、熟悉单回路PI控制算法、了解工控闭环系统、会基础Python编程、接触过PLC实操与工控数据采集。 你是否遇到过&#xff1f; 痛点1&#xff1a;只会调试单回路PI控制&#xff0c;碰到多级串联被控对象&#xff0c;系统震荡剧烈、响…...

Harness Engineering: 为 AI 搭建可持续迭代环境的实践

在公司内部一个 AIGC页面 Verify 项目(下面代号 HelixVerify )中,我们经历了 114 次版本迭代, 将相对benchmark 的风险样本召回率从 最初的 8% 提升至 98.86%,无风险样本通过率从 36.11% 提升至 54.93%。 **整个 114 次迭代中,基本没有代码是我手写的。**从第一个版本开始,所有…...

OpenClaw常见错误排查:nanobot连接问题解决方案

OpenClaw常见错误排查&#xff1a;nanobot连接问题解决方案 1. 问题背景与排查思路 上周我在本地部署OpenClaw对接nanobot镜像时&#xff0c;遇到了几个典型的连接问题。作为一个开源自动化框架&#xff0c;OpenClaw在实际使用中经常会遇到各种"水土不服"的情况。特…...

别再花钱买会员了!手把手教你用D-ID AI Studio免费复活老照片,7天试用期全攻略

零成本玩转AI影像修复&#xff1a;D-ID免费额度深度使用指南 老照片承载着无数珍贵回忆&#xff0c;但褪色、折痕让它们逐渐模糊。如今AI技术让这些记忆重获新生——无需付费订阅&#xff0c;你完全可以通过合理规划免费资源完成老照片动画化项目。本文将彻底拆解如何最大化利用…...

Polars 2.0清洗故障率下降92%的关键:schema-on-read预检 + 自定义error-handling策略(金融级数据治理标准)

第一章&#xff1a;Polars 2.0清洗故障率下降92%的关键洞察Polars 2.0 通过重构执行引擎与引入零拷贝数据验证机制&#xff0c;显著降低了ETL清洗阶段的运行时异常。核心改进在于将传统基于Python对象的列类型推断&#xff0c;替换为编译期静态Schema校验&#xff0c;并在LazyF…...

Clawdbot+Python爬虫实战:自动化数据采集与智能分析

ClawdbotPython爬虫实战&#xff1a;自动化数据采集与智能分析 1. 为什么数据采集需要Clawdbot这样的智能体 你有没有遇到过这样的场景&#xff1a;市场部同事凌晨三点发来消息&#xff0c;“老板急要竞品价格数据&#xff0c;明早九点前要出分析报告”。你打开浏览器&#x…...