【问题标题】:How can I prevent bind event on $rootScope repeatedly?如何重复防止 $rootScope 上的绑定事件?
【发布时间】:2015-05-06 04:34:58
【问题描述】:

我在 controllerOne 的 $rootScope 上有一个事件:

$rootScope.$on('eventName', function(event, args) {
    invoke function A;    
});

和controllerTwo,我发出事件:

$scope.$emit('eventName', args);

如果我第一次进入controllerOne,当我发出事件时,函数A只运行一次;而当我第二次进入controllerOne时,我发出事件,然后函数A运行不止一次,可能是两到三次.

如何防止 $rootScope 上的重复绑定事件

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    使用$destroy事件正确取消订阅处理程序:https://stackoverflow.com/a/18856665/4573999

    适应您的情况:

    var cleanUp = $rootScope.$on('eventName', function handler(event, args) {
        invoke function A;    
    });
    
    $scope.$on('$destroy', function () { 
        cleanUp();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2011-11-12
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多