angularjs – Angular – broadcast,$on在指令中被多次调用
发布时间:2020-12-17 06:58:16 所属栏目:安全 来源:网络整理
导读:我正在开发一个带有角度的单页应用程序,我需要在2个不同的指令之间进行通信,这些指令基本上没有父子关系. 在指令A中,我有2个地方需要从不同的功能广播相同的事件.在指令B中,已经为此写了一个听众. 现在,我观察到每当callFirstFunc第一次调用它的广播,监听器
|
我正在开发一个带有角度的单页应用程序,我需要在2个不同的指令之间进行通信,这些指令基本上没有父子关系.
在指令A中,我有2个地方需要从不同的功能广播相同的事件.在指令B中,已经为此写了一个听众. 现在,我观察到每当callFirstFunc&第一次调用它的广播,监听器将被调用一次.在后续调用时,监听器被调用两次,三次等等,它继续增加. callFirstFunc被执行时调用callSecondFunc,因此对此的监听器也被称为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',attrs) {
// some other code
scope.$on("someEvent",function(){
detectSTuff();
})
function detectStuff(){
// other code
}
}
};
});
解决方法
我想你忘了取消绑定偶数处理程序.
你可以像下面这样做 – var someEventHandle = scope.$on("someEvent",function(){
detectSTuff();
});
scope.$on('$destroy',someEventHandle);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
