2017-05-31 124 views
0

我正在編寫一些代碼,並意識到angularjs1.5 +組件實際上並沒有收到$scope.$broadcast事件,意味着$scope.$on從未在組件中運行控制器功能。

雖然我能夠從組件控制器$emit事件,並由父控制器收到$on,但它只是不聽廣播事件。

廣播從父:$scope.$broadcast('parentEvnt', [1,2,3]);

在組件未收到:$scope.$on('parentEvnt', function(event, data){ \\

我創造了這個plunker顯示的問題。

搜索了一些文章,以及在SO上,但沒有找到任何答案,並試圖用$rootScope.$broadcast也沒有幫助。

和,如果它不可能,那麼從應用程序中的任意位置通知組件的最佳方式是什麼?

+0

嗨,也許這可以幫助你[鏈接,一個控制器到另一對呼叫服務上-NG-點擊](https://stackoverflow.com/questions/34668416/鏈接一個控制器到另一個呼叫服務在ng單擊/ 34702780#34702780) – Maher

回答

2

這裏的問題在於,您甚至在您的子控制器初始化並開始聆聽這些事件之前就已進行事件處理。因此,問題不在於你是否使用$scope$rootScopebroadcast :)

舉例來說,我改變了你broadcast有它$timeout與2秒內,預期它會工作。

$timeout(function() { 
    $rootScope.$broadcast('parentEvnt', [1,2,3]); 
}, 2000); 

儘管如此,您最好是想在按鈕點擊或其他場景中使用它。

working example

+0

謝謝@tanmay,錯過了事件循環部分。 – anoop

+1

@anoop np,很高興它有點幫助:) – tanmay