《AngularJS深度剖析与最佳实践》一2.11 消息

简介:

本节书摘来自华章出版社《AngularJS深度剖析与最佳实践》一书中的第2章,第2.11节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.11 消息

在传统的DOM编程中,消息(message)机制非常有用,特别是消息冒泡机制,让我们不用额外的代码就可以实现“职责链”模式。但是我们要尽量摆脱DOM操作,难道这是必须使用DOM操作的场景吗?不是的,Angular中也有一种不依赖DOM的消息机制,本节中我们就对它进行详细讲解。
我们知道,Scope也被组织成了一棵树,跟DOM树具有相似的结构。Angular的消息机制就是通过scope上的几个函数实现的:
$broadcast(name, args):向当前scope及其所有下级scope递归广播名为name的消息,并带上args参数。
$emit(name, args):向当前scope及其所有直线上级scope发送名为name的消息,并带上args参数。
$on(name, listener):监听本scope收到的消息,listener的形式为:function(event, args) {},event参数的结构和DOM中的event类似。
以图2-1所示的结构的scope为例:
当我们在rootScope上调用$broadcast广播一个消息时,任何一个scope(包括rootScope)上通过$on注册的listener都将收到这个消息。当我们在scope1上调用$broadcast广播一个消息时时,scope1/scope1.1/scope1.2将依次收到这个消息。当我们在

image

rootScope上调用$emit上传一个消息时,rootScope将收到这个消息。当我们在scope1.1上调用$emit上传一个消息时,scope1.1/scope1/rootScope将依次收到这个消息。
当通过$emit上传一个消息时,将使用冒泡机制,比如,假设我们在scope1.1上调用$emit,我们在scope1上注册一个listener:

scope1.$on('name', function(event) {
    event.stopPropagation();
});

这个stopPropagation函数将阻止冒泡,也就是说scope1.1和scope1都将正常接收到这个消息,但rootScope就接收不到这个消息了。
有时候,用消息机制和普通回调函数都能达到类似的效果,如何选择呢?
当一个嵌套结构具有树形的业务含义时,我们就优先使用消息机制来通讯。或者从另一个角度看,符合“职责链”模式的适用场景时,消息机制比较合适。反之,应该使用普通的回调函数。
如果难以决定使用消息还是回调函数,那么就优先使用回调函数(主要是Angular事件),因为这种情况下执行路径比较明确,容易跟踪。或者在对此有深入理解前,先使用表面的判断方式:一个事件是否需要被很多地方处理?调用stopPropagation是否有意义?如果是,那么用消息,否则用回调。

相关文章
|
2天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
253 116
|
17天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
11天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
650 220
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
886 61
|
9天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1473 157
|
6天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
282 139
|
8天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
594 109