为了在我的 AngularJS 应用程序中保持分离,我有一个validationService不同的控制器可能会调用它来执行验证。实际上,validate()给定控制器中的方法应该只是服务将侦听$emit的事件(request:validate例如)——但它似乎$rootScope从未接收到发出的事件。例如:
angular.module('mine').controller('CommitController', [
'$scope',
function($scope) {
$scope.validate = function() {
$scope.$emit('request:validate');
};
}
]);
angular.module('mine.services').factory('validationService', [
'$rootScope',
function($rootScope) {
$rootScope.$on('request:validate', function(e) {
console.log('received the request:validate event - go ahead with validation');
});
}
]);
但$on('request:validate')永远不会从$rootScope. 不$rootScope接收从子范围发出的事件?$rootScope监听事件的方式有什么奇怪的吗?
对此是否有“更多角度”的方法?控制器应该直接调用validationService吗?事件应该$broadcast从头$rootScope开始吗?