【问题标题】:angularjs - $rootScope.$on called multiple timesangularjs - $rootScope.$on 多次调用
【发布时间】:2016-10-21 13:47:12
【问题描述】:

我在一个控制器中:

$rootScope.$emit("newAction", {});

我在另一个控制器中:

$rootScope.$on('newAction', function() {
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
      });

我的问题是 $rootScope.$on 被多次调用。我不知道为什么。

如果有人有提示... 谢谢

【问题讨论】:

  • newAction 是您多次调用的函数吗?显示包围$rootScope.$emit的代码
  • 嗨,在控制器 2 中,使用 $scope 来检测“newAction”。

标签: angularjs


【解决方案1】:

$rootScope 监听器不会自动销毁。您需要使用$destroy 将其销毁。

var customeEventListener = $rootScope.$on('newAction', function() {
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
          vm.newAction (...);
      });

$scope.$on('$destroy', function() {
        customeEventListener();
  });

参考此链接
Working with $scope.$emit and $scope.$on

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多