Angular Broadcast在$ scope中调用了多次

时间:2017-04-05 11:16:21

标签: jquery angularjs html5

我有一个使用3个广播的应用程序,比如 broadcast1,broadcast2和broadcast3。

如果广播1和广播2未在广播之前广播,则

broadcast3 正常工作。

但是如果在广播1和广播2被触发之后触发了广播3 ,则广播3将连续两次触发。

请注意我在 $ rootscope 中播放每个广播,并在 $ scope 上接收它们。在所有情况下,广播都是从父级到子级进行的。

请帮我避免连续两次广播

1 个答案:

答案 0 :(得分:0)

您的问题有很多建议:

使用$ rootScope。$ emit()而不是$ broadcast() - 当您在rootScope上广播时,事件将被缓存到当前存在的每个范围。这可能会减慢app的速度。如果您的听众被挂钩到rootScope,则没有必要这样做。

当Controller被销毁时,不要忘记清理$ rootScope。$ on()侦听器。大多数人不这样做,这会导致内存泄漏:



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

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