AngularJs广播重复执行太多次

前端之家收集整理的这篇文章主要介绍了AngularJs广播重复执行太多次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的一个Angular控制器,我有这:
// controller A
$rootScope.$on("myEventFire",function(event,reload) {
    someAction();
});

在另一个控制器我有这:

// controller B
$scope.openList = function(page) {
    $rootScope.$broadcast('myEventFire',1);
}

现在,这是一个单页面的应用程序。当我最初去控制器A并尝试触发这个事件,someAction()将被执行一次。如果我离开并再次回到控制器A并做同样的事情,someAction()被执行两次。如果我再次做,它发生三次,等等。
我在这里做错了什么?

你可以尝试使用$ scope。$ on()?每次创建控制器A时,它都会在根范围上添加一个新的监听器,并且在您离开和返回时不会被销毁。如果在控制器的本地作用域上执行它,当您离开并且您的作用域被销毁时,侦听器应该被删除
// controller A
$scope.$on("myEventFire",reload) {
    someAction();
});

$ broadcast会将事件向下发送到所有子作用域,因此它应该在本地作用域上获取。 $ emit工作方式向另一方向冒泡向根范围。

猜你在找的Angularjs相关文章