簡體   English   中英

Angular $ rootScope。$ broadcast()事件在控制器中捕獲兩次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM