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工作方式向另一方向冒泡向根范围。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读