我有一个使用3个广播的应用程序,比如 broadcast1,broadcast2和broadcast3。
如果广播1和广播2未在广播之前广播,则broadcast3 正常工作。
但是如果在广播1和广播2被触发之后触发了广播3 ,则广播3将连续两次触发。
请注意我在 $ rootscope 中播放每个广播,并在 $ scope 上接收它们。在所有情况下,广播都是从父级到子级进行的。
请帮我避免连续两次广播
答案 0 :(得分:0)
您的问题有很多建议:
使用$ rootScope。$ emit()而不是$ broadcast() - 当您在rootScope上广播时,事件将被缓存到当前存在的每个范围。这可能会减慢app的速度。如果您的听众被挂钩到rootScope,则没有必要这样做。
当Controller被销毁时,不要忘记清理$ rootScope。$ on()侦听器。大多数人不这样做,这会导致内存泄漏:
var listenerCleanFn = $rootScope.$on('ev', cb);
$scope.$on('$destroy', function() {
listenerCleanFn();
});