![](/img/trans.png)
[英]What is the difference between $rootScope vs $rootScope.$emit/$broadcast in AngularJS?
[英]What is difference between $scope.$emit and $rootScope.$emit?
$ scope。$ emit和$ rootScope。$ emit有什么區別?
我正在使用它從指令發出到控制器,並且它在兩種情況下都起作用!
$scope.$emit
允許當前作用域和父作用域(包括rootScope)偵聽事件。
$rootScope.$emit
僅允許rootScope偵聽特定事件。
當您希望該$scope
及其所有父級和$rootScope
能夠聽到該事件時, $scope.$emit
很有用。 $scope.$emit
是一個對父母$scope
抱怨的孩子。
和
$rootScope.$emit
僅允許其他$rootScope
偵聽器捕獲它。 當您不想通知每個$scope
時,這很有用。
$emit()
將更改向上發送到其父作用域。
因此,當您執行$scope.$emit
,您正在向父范圍發送通知,該通知可能是另一個$scope
或可能是$rootScope
。
它基本上像childScope > parentScope(s)
。
相反的是.broadcast()
。
.broadcast()
廣播對子作用域的更改。 因此,如果您從$rootScope
廣播,則所有子級$scope
都將監聽。
$ emit(name,args);
通過作用域層次結構向上調度事件
name
通知已注冊的$ rootScope.Scope偵聽器。事件生命周期始於調用$ emit的作用域。 在此作用域上偵聽名稱事件的所有偵聽器都會收到通知。 然后,事件向上遍歷到根作用域,並在此過程中調用所有已注冊的偵聽器。 如果其中一個偵聽器取消了該事件,則該事件將停止傳播。
偵聽器發出的任何異常都將傳遞到$ exceptionHandler服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.