我正在尝试使用angular的$broadcast从工厂A拨打电话到工厂B.这两个工厂在单独的模块中定义.下面是尝试执行此操作的代码.
angular.module('secondApp', [])
.service('B', function($rootScope, $scope) {
$rootScope.$on('test', function(event, data) {
console.log(event, data);
});
});
var app = angular.module('firstApp', ['secondApp']);
app.controller('MainCtrl', function($scope, A) {
$scope.test = function() {
A.test();
};
});
app.service('A', function($rootScope) {
this.test = function() {
$rootScope.$broadcast('test', 'Hello from service A!');
};
});
最佳答案 你应该使用$rootScope.$emit()而不是$rootScope.$broadcast().
因为$rootScope.$broadcast()将向下发送.
编辑:
根据Angular guide:Plunker制作了一个示例代码来测试emit / broadcast /.
事实证明,使用$rootScope.$on来监听事件将由$rootScope.$emit和$rootScope.$broadcast触发.区别在于$broadcast将向下发送,因此所有范围也将收到该事件.
因此,如果您只想通知$rootScope,只需使用$rootScope.$emit. $rootScope.$broadcast将浪费资源.
希望它会有所帮助.