title: Why do events from provider not $emit to $rootScope?
body: <p>To keep things de-coupled in my AngularJS app, I've got a single <code>validationService</code> that different controllers may call to perform the validation. As it is, the <code>validate()</code> method in a given controller should just <code>$emit</code> an event (<code>request:validate</code>, for example) which the service will listen for -- but it does not appear that <code>$rootScope</code> ever receives the emitted event. For example:</p>
  
  <pre><code>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');
          });
      }
  ]);
  </code></pre>
  
  <p>But the <code>$on('request:validate')</code> never fires from <code>$rootScope</code>. Does <code>$rootScope</code> not receive events emitted from child scopes? Is there some quirk in how <code>$rootScope</code> listens to events?</p>
  
  <p>Is there a "more Angular" approach to this? Should the controllers simply call <code>validationService</code> directly? Should the events <code>$broadcast</code> from <code>$rootScope</code> to begin with?</p>