我有一個應用程序,其中使用3個廣播,例如broadcast1,broadcast2和broadcast3。
broadcast3如果broadcast1和broadcast2之前 broadcast3都沒有播出工作正常。
但是,如果廣播3被觸發之後廣播1和廣播2被觸發,則廣播3被連續觸發兩次。
請注意我在$ rootscope廣播每隔廣播和接收他們$範圍。在所有情況下,廣播從父母到孩子發生。
請幫我避免這種連續兩次播出
我有一個應用程序,其中使用3個廣播,例如broadcast1,broadcast2和broadcast3。
broadcast3如果broadcast1和broadcast2之前 broadcast3都沒有播出工作正常。
但是,如果廣播3被觸發之後廣播1和廣播2被觸發,則廣播3被連續觸發兩次。
請注意我在$ rootscope廣播每隔廣播和接收他們$範圍。在所有情況下,廣播從父母到孩子發生。
請幫我避免這種連續兩次播出
有許多建議爲你的問題:
使用$ rootScope $發出()而不是$播出() - 當你在rootScope播出,事件被彙總到當前存在的每個範圍。這可能會減慢應用程序。如果您的聽衆與rootScope掛鉤,則沒有必要這麼做。
當Controller被銷燬時,不要忘記清理$ rootScope。$ on()偵聽器。大多數人不這樣做,這會導致內存泄漏:
var listenerCleanFn = $rootScope.$on('ev', cb);
$scope.$on('$destroy', function() {
listenerCleanFn();
});
但我沒有收到rootScope上的廣播。我收到它的控制器範圍。我希望'$ destroy'只會在控制器的銷燬中被調用。但是,在這種情況下,所有的控制器都應該生效。 –
3rd廣播是從父母到孩子,其中$ emit不起作用 –
可以粘貼你的代碼片段?廣播1和廣播2的價值很可能與廣播3相沖突 –
可以請分享代碼片段以獲取更多詳細信息。 –
應用程序緊密耦合,我無法分離代碼並在此處提供。但它可能被認爲是每個點擊都有三個按鈕和三個廣播。 –