簡體   English   中英

$ rootScope。$ on在廣播后沒有被調用

[英]$rootScope.$on not getting called after broadcast

我有兩個控制器,想通知一個控制器另一個控制器發生了一些事件。 為此,我嘗試使用角度廣播,但未成功。 請在下面找到我的代碼:

firstController.js

 $rootScope.$on('xyz',function(){
    alert('Called');
 });

secondController.js

  $rootScope.$broadcast('xyz');

有人可以幫忙確定我在這里缺少什么嗎?

結合使用以下任何一種:

$rootScope.$broadcast();
$scope.$on();

// or

$rootScope.$emit();
$rootScope.$on();

$broadcast將事件向下調度到所有子作用域,因此您可以使用$scope服務監聽它。

但是, $emit通過作用域層次結構向上調度,並且由於$rootScope是最高級別,因此您可以使用$rootScope調度和偵聽同一事件。 就性能而言,這也要好得多,因為事件不會通過多個作用域向下傳播。

請在這里看看: jsfiddle

 var app = angular.module('app', []);

app.controller('c1', function($rootScope, $scope){

    $scope.click = function() {
         $rootScope.$broadcast('xyz');
    }
});

app.controller('c2', function($scope){

   $scope.$on('xyz', function(){

    alert("clicked");
    });

})

在firstController.js中使用$ scope代替$ rootScope

$scope.$on('xyz', function(event, args) {

   alert('Called')
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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