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