[英]Angular $rootScope.$broadcast() event caught twice in controller
單擊按鈕進行廣泛活動:-
$scope.onButtonClick = function(){
$rootScope.$broadcast('onButtonClick');
}
並在另一個控制器中捕獲事件:-
$rootScope.$on('onButtonClick',function(event){
alert("catched");
console.log(event);
});
但是,即使只發射了一次,它也捕獲了兩次。 這是為什么?
事實證明,由於html中的ng-controller
聲明實例化了多個控制器,並且還作為ui-router
的狀態設置的一部分。
解決方案是刪除其中一個聲明。
如果在$rootScope
上廣播事件,則可以在每個控制器$scope
上捕獲事件。 IMO不應在$rootScope
上捕獲該事件。
$scope.$on('onButtonClick',function(event){
alert("catched");
console.log(event);
});
我創建了一個小矮人展示櫃,該展示櫃可以正常運行。 柱塞
您可能有同一個控制器的多個實例,您可以在其中捕獲事件。 請按照Chandermani的建議檢查。
Angular $rootScope.$broadcast()
事件在控制器中捕獲兩次
$scope.$on('saveCancelLeadInfo', function (event, args) {
if ($scope.$$listenerCount["saveCancelLeadInfo"] > 1) {
$scope.$$listenerCount["saveCancelLeadInfo"] = 0;
}
your code here
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.