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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |