簡體   English   中英

$ scope。$ emit和$ rootScope。$ emit有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM