加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJs广播重复执行太多次

发布时间:2020-12-17 08:56:00 所属栏目:安全 来源:网络整理
导读:在我的一个Angular控制器,我有这: // controller A$rootScope.$on("myEventFire",function(event,reload) { someAction();}); 在另一个控制器我有这: // controller B$scope.openList = function(page) { $rootScope.$broadcast('myEventFire',1);} 现在
在我的一个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工作方式向另一方向冒泡向根范围。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读