我正在尝试使用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!');
};
});
答案 0 :(得分:2)
您应该使用$rootScope.$emit()
代替$rootScope.$broadcast()
。
因为$rootScope.$broadcast()
将向下发送。
修改强>
根据Angular指南制作示例代码以测试emit / broadcast /:Plunker。
事实证明$rootScope.$on
和$rootScope.$emit
会触发使用$rootScope.$broadcast
监听事件。差异是$broadcast
将向下发送,因此所有范围也将收到该事件。
因此,如果您只想通知$rootScope
,请使用$rootScope.$emit
。 $rootScope.$broadcast
会浪费资源。
希望它会有所帮助。