$ scope。$ emit和$ rootScope有什么区别。$ emit?

时间:2016-02-01 13:40:23

标签: javascript angularjs scope rootscope emit

$ scope。$ emit和$ rootScope。$ emit?

之间有什么区别

我正在使用它从指令发送到控制器,它可以两种方式工作!

3 个答案:

答案 0 :(得分:1)

$scope.$emit允许当前范围和父级(包括rootScope)监听事件。

$rootScope.$emit只允许rootScope监听特定事件。

答案 1 :(得分:0)

当您希望$scope.$emit及其所有父母和$scope能够听到此事件时,

$rootScope非常有用。 $scope.$emit是一个抱怨父母的孩子$scope

并且

$rootScope.$emit只允许其他$rootScope侦听器捕获它。如果您不想通知每个$scope,这非常有用。

答案 2 :(得分:-1)

$emit()在链中向上发送对其父作用域的更改。

因此,当您执行$scope.$emit时,您要向父作用域发送通知,该通知可以是另一个$scope,也可能是$rootScope
它基本上像childScope > parentScope(s)一样工作。

它的对面是.broadcast()

.broadcast()广播对子范围的更改。因此,如果您从$rootScope广播,则所有孩子$scope都会收听。

来自文档:

  

$ emit(name,args);

     

通过范围层次结构向上调度事件name,通知已注册的$ rootScope.Scope侦听器。

     

事件生命周期从调用$ emit的范围开始。监听此范围内的名称事件的所有侦听器都会收到通知。之后,事件向上遍历根范围并沿途调用所有已注册的侦听器。如果其中一个侦听器取消它,该事件将停止传播。

     

从侦听器发出的任何异常都将传递给$ exceptionHandler服务。