Javascript $scope.$emit和$rootScope.$emit之间的区别是什么?

Javascript $scope.$emit和$rootScope.$emit之间的区别是什么?,javascript,angularjs,scope,rootscope,emit,Javascript,Angularjs,Scope,Rootscope,Emit,$scope.$emit和$rootScope.$emit之间的区别是什么 我用它从一个指令发射到控制器,它是双向工作的 $emit()将更改发送到链中向上的其父作用域 因此,当您执行$scope.$emit操作时,您正在向父作用域发送通知,父作用域可能是另一个$scope,也可能是$rootScope 它的工作原理基本上类似于childScope>parentScope 它的反面是.broadcast() .broadcast()将更改广播到子作用域。因此,如果您从$rootScope进行广播

$scope.$emit和$rootScope.$emit之间的区别是什么

我用它从一个指令发射到控制器,它是双向工作的

$emit()
将更改发送到链中向上的其父作用域

因此,当您执行
$scope.$emit
操作时,您正在向父作用域发送通知,父作用域可能是另一个
$scope
,也可能是
$rootScope

它的工作原理基本上类似于
childScope>parentScope

它的反面是
.broadcast()

.broadcast()
将更改广播到子作用域。因此,如果您从
$rootScope
进行广播,则所有子
$scope
都会收听


从文档中: $emit(名称,args); 通过作用域层次结构向上发送事件
名称
,通知已注册的$rootScope.scope侦听器。

事件生命周期从调用$emit的作用域开始。侦听此作用域上的name事件的所有侦听器都会收到通知。之后,事件向上遍历根作用域,并沿途调用所有注册的侦听器。如果某个侦听器取消该事件,则该事件将停止传播

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


$scope.$emit
在希望
$scope
及其所有父级和
$rootScope
能够听到事件时非常有用
$scope.$emit
是一个向父母抱怨的孩子
$scope


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

$scope.$emit
允许当前作用域和父级(包括根作用域)侦听事件


$rootScope.$emit
仅允许rootScope侦听特定事件。

这很好地解释了
$scope.$emit
是什么,但不是
$rootScope.$emit
是什么
$rootScope.$emit
只会让其他
$rootScope
侦听器捕获它。@ste2425以前从未想过它,但它似乎无效。