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()
将执行两次。如果我再做一次,它会发生3次,依此类推。我在做什么错呢?
回答:
你可以尝试使用$scope.$on()
吗?每次创建控制器A时,它都会 在根作用域上
添加一个新的侦听器,并且在您前后导航时不会被破坏。如果在控制器的本地范围内执行此操作,则在您离开时监听器应被删除,并且范围将被破坏。
// controller A$scope.$on("myEventFire", function(event, reload) {
someAction();
});
$broadcast
将事件向下发送到所有子范围,因此应在您本地的范围内进行接收。 $emit
以另一种方式冒泡到根范围。
以上是 AngularJs广播重复执行太多次 的全部内容, 来源链接: utcz.com/qa/405121.html