2017-04-05 159 views
0

我有一個應用程序,其中使用3個廣播,例如broadcast1,broadcast2和broadcast3。

broadcast3如果broadcast1和broadcast2之前 broadcast3都沒有播出工作正常。

但是,如果廣播3被觸發之後廣播1和廣播2被觸發,則廣播3被連續觸發兩次。

請注意我在$ rootscope廣播每隔廣播和接收他們$範圍。在所有情況下,廣播從父母到孩子發生。

請幫我避免這種連續兩次播出

+0

可以粘貼你的代碼片段?廣播1和廣播2的價值很可能與廣播3相沖突 –

+0

可以請分享代碼片段以獲取更多詳細信息。 –

+0

應用程序緊密耦合,我無法分離代碼並在此處提供。但它可能被認爲是每個點擊都有三個按鈕和三個廣播。 –

回答

0

有許多建議爲你的問題:

使用$ rootScope $發出()而不是$播出() - 當你在rootScope播出,事件被彙總到當前存在的每個範圍。這可能會減慢應用程序。如果您的聽衆與rootScope掛鉤,則沒有必要這麼做。

當Controller被銷燬時,不要忘記清理$ rootScope。$ on()偵聽器。大多數人不這樣做,這會導致內存泄漏:

var listenerCleanFn = $rootScope.$on('ev', cb); 
 

 
$scope.$on('$destroy', function() { 
 
    listenerCleanFn(); 
 
});

+0

但我沒有收到rootScope上的廣播。我收到它的控制器範圍。我希望'$ destroy'只會在控制器的銷燬中被調用。但是,在這種情況下,所有的控制器都應該生效。 –

+0

3rd廣播是從父母到孩子,其中$ emit不起作用 –