angularjs中的广播、事件传播总结
来源:互联网 发布:adams软件介绍 编辑:程序博客网 时间:2024/06/10 14:54
我们做的web应用的组件好多是松耦合的,在这样的情况下,即时的同行不总是可行的。
angular的事件和浏览器本身的dom事件不是想通的,这就意味着我们只能在作用域上来监听angular的事件,而不是监听dom事件;那么,问题来了,我们在其他的控制器怎么监听到本控制器的事件变化了?这就要用到angular为我们提供的广播!
因为作用域是有层次的,所以我们可以在作用域链上传递事件。
可以使用的广播有以下几种:
1.使用$emit来冒泡事件
要把事件沿着作用域链向上派送(从子作用域到父作用域),我们要使用$emit函数。
在一个$emit事件函数的调用中,事件从子作用域冒泡到父作用域。在产生事件的作用域之上的所有作用域都会收到这个事件的通知。
当想要跟应用的其他部分交流状态的变更时,我们使用$emit。如果想要跟$rootScope
通信,需要$emit这个事件。
*** $emit方法带有两个参数。
1.name(字符串)
要发出的事件名称。
2.args(集合)
一个参数的集合,作为对象传递到事件监听器中。
$emit方法返回了一个事件对象从监听器中发出的一切异常都会传递到$exceptionHandler
服务中。
使用$broadcast向下传递事件
要把事件向下传递(从父作用域到子作用域),我们使用$broadcast函数。在$broadcast方法上,每个注册了监听器的子作用域都会收到这个信息。事件传播到所有的指令和当前作用域的间接作用域上,并且一路往下调用每个监听器。用了$broadcast方法之后,就没法取消事件的发送了。$broadcast方法自身带有两个参数。
1.name(字符串)
要发出的事件名称。
2.args(集合)
一个参数的集合,作为对象传递到事件监听器中。
从监听器中发出的一切异常都会传递到$exceptionHandler
服务中。
事件监听
要监听一个事件,我们可以使用$on方法。这个方法为具有某个特定名称的事件注册了一个监听器。事件名称就是在Angular中触发的事件类型。
不管什么时候事件$routeChangeStart(路由将要变更的时候,会广播这个事件)被触发,监听器(这个函数)都会被调用。Angular把evt对象作为第一个参数传给正在监听的一切事件,不管它是我们自定义的事件还是内置的Angular服务。
Angular核心框架发送事件,我们监听之后执行操作。可以用事件来让自己的Angular对象能在全局事件的不同状态上与应用交互。
我们用$emit()调用的有好几个事件,它们把事件往上发,更多调用的是$broadcast()事件。
- angularjs中的广播、事件传播总结
- angularjs事件同级传播
- angularjs 广播事件
- Angularjs中的事件广播 —$broadcast,$emit,$on
- Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
- Angularjs中的事件广播(全面解析$broadcast,$emit,$on)
- Angularjs中的事件广播 —$broadcast,$emit,$on
- angularJS中的广播销毁
- angularjs 事件广播(分发)与事件监听
- web2.0中的事件传播机制
- AngularJS作用域$scope事件路由与广播
- angularjs中作用域事件的路由与广播
- AngularJs 中的键盘事件和鼠标事件
- 事件传播
- JavaScript中的事件传播(DOM2标准事件模型)
- JS中的事件传播和默认事件取消
- JQuery中的事件冒泡和阻止事件的传播行为
- JavaScript中的事件冒泡?事件传播的解释
- linux JDK的安装
- Linux kernel 版本
- div 中id和class使用讲解
- windows-x64下redis-cluster集群环境的搭建(一)
- 小米note2 手机入手体验一
- angularjs中的广播、事件传播总结
- @SerializedName注解
- 【学习笔记】OpenKM安装配置
- linux命令之su
- Java 面试准备系列1-构造函数,静态方法的执行顺序
- Jxl 中Cell获取到的excel数据保留精度问题
- oracle pl/sql定时器时间
- 排序算法09:排序算法总结
- javaweb快速上手(二 登陆功能)