Page 309 - AngularJS权威教程
P. 309
20.4 事件对象 289
1. name(字符串) 19
要发出的事件名称。
2. args(集合) 20
一个参数的集合,作为对象传递到事件监听器中。
21
$emit()方法返回了一个事件对象(关于事件对象的细节,查看20.3节)。
从监听器中发出的一切异常都会传递到$exceptionHandler服务中。
22
20.3 事件监听
23
要监听一个事件,我们可以使用$on()方法。这个方法为具有某个特定名称的事件注册了一
个监听器。事件名称就是在Angular中触发的事件类型。 24
例如,我们可以在路由变更过程被触发时,监听事件:
25
scope.$on('$routeChangeStart',
function(evt, next, current) {
// 一个新的路由被触发了
}); 26
不管什么时候事件$routeChangeStart(路由将要变更的时候,会广播这个事件)被触发,
监听器(这个函数)都会被调用。 27
Angular把evt对象作为第一个参数传给正在监听的一切事件,不管它是我们自定义的事件还
是内置的Angular服务。 28
20.4 事件对象 29
事件对象有以下属性。
30
1. targetScope(作用域对象)
这个属性是发送或者广播事件的作用域。 31
2. currentScope(作用域对象)
32
这个对象包含了当前处理事件的作用域。
3. name(字符串)
33
这个字符串是触发之后,我们正在处理的事件名称。
4. stopPropagation(函数) 34
stopPropagation()函数取消通过$emit触发的事件的进一步传播。
5. preventDefault(函数) 35
preventDefault把defaultPrevented标志设置为true。尽管不能停止事件的传播,我们可
以告诉子作用域无需处理这个事件(也就是说,可以安全地忽略它们)。 36