事件的传播
冒泡
要把事件沿着作用域链向上派送(从子作用域到父作用域),我们要使用$emit() 函数。
// 发送一个事件
// 我们的用户以当前user登录了
scope.$emit('user:logged_in', scope.user);
- name(字符串)
要发出的事件名称。 - args(集合)
一个参数的集合,作为对象传递到事件监听器中。
向下传播 $broadcast
// 等等,购物车去结账了
// 当购物车在结账的时候
// 下面所有的指令都应当禁用自己
scope.$broadcast('cart:checking_out', scope.cart);
- name(字符串)
要发出的事件名称。 - args(集合)
事件的监听
$on()方法
scope.$on('$routeChangeStart',
function(evt, next, current) {
// 一个新的路由被触发了
});
事件对象
事件对象有以下属性
targetScope(作用域对象)
这个属性是发送或者广播事件的作用域。
currentScope(作用域对象)
这个对象包含了当前处理事件的作用域。
name(字符串)
这个字符串是触发之后,我们正在处理的事件名称。
stopPropagation(函数)
/////
我们用$emit() 调用的有好几个事件,它们把事件往上发, 更多调用的是$broadcast() 事件。