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

回到顶部