为了在我的 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
开始吗?