Angularjs 角度-在指令中多次调用$on

Angularjs 角度-在指令中多次调用$on,angularjs,angularjs-directive,angularjs-scope,angular-broadcast,Angularjs,Angularjs Directive,Angularjs Scope,Angular Broadcast,我正在使用angular开发一个单页应用程序,我需要在两个基本上没有父子关系的不同指令之间进行通信 在指令A中,我有两个地方需要从不同的功能广播相同的事件。在指令B中,我们为此编写了一个$on侦听器 现在,我观察到,每当第一次调用callFirstFunc及其广播时,侦听器都会被调用一次。在随后的调用中,侦听器会被调用两次、三次等等,它会不断增加 在执行callFirstFunc时调用callSecondFunc,因此调用此函数的侦听器的次数与在callFirstFunc中广播的侦听器的次数相同

我正在使用angular开发一个单页应用程序,我需要在两个基本上没有父子关系的不同指令之间进行通信

在指令A中,我有两个地方需要从不同的功能广播相同的事件。在指令B中,我们为此编写了一个$on侦听器

现在,我观察到,每当第一次调用callFirstFunc及其广播时,侦听器都会被调用一次。在随后的调用中,侦听器会被调用两次、三次等等,它会不断增加

在执行callFirstFunc时调用callSecondFunc,因此调用此函数的侦听器的次数与在callFirstFunc中广播的侦听器的次数相同。 那么,为什么侦听器不被调用一次,为什么调用多次?它是循环的,并且每次都在增加

指令A:

app.directive("firstDir", function ($rootScope) {
    return {
        restrict: 'E',
        link: function (scope, element, attrs) {
            // some other code
            callFirstFunc();
            var callFirstFunc = function(){
                // some other code
                $rootScope.$broadcast("someEvent");
            }
            callSecondFunc();
            var callSecondFunc = function(){
                // some other code
                $rootScope.$broadcast("someEvent");
            }
        }
    };
});
指令B:

app.directive("secondDir", function ($rootScope) {
        return {
            restrict: 'E',
            link: function (scope, element, attrs) {
                // some other code
                scope.$on("someEvent", function(){
                    detectSTuff();
                }) 
               function detectStuff(){
                  // other code
               }                    
            }
        };
    });

我想你忘了解开扳平手柄

你可以这样做-

var someEventHandle=scope.$on(“someEvent”,function()){
检测凝灰岩();
});

作用域:$on(“$destroy”,someEventHandle)此代码适用于我:

$rootScope.$$listeners.nameOfYourEvent.length = 1;

拉比-我试过了,但还是一样。它不止听一次,而且还在不断增加