我正在开发一个带有角度的单页应用程序,我需要在两个不同的指令之间进行通信,这些指令基本上没有父子关系。
在指令 A 中,我有 2 个地方需要从不同的功能广播相同的事件。在指令 B 中,为此编写了一个 $on 监听器。
现在,我观察到只要 callFirstFunc 及其广播第一次被调用,监听器就会被调用一次。在随后的调用中,监听器被调用两次,三次等等,它不断增加。
callSecondFunc 在 callFirstFunc 被执行时被调用,所以这个监听器也被称为尽可能多的 no。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
}
}
};
});