Can you emit event from Controller in one module to Directive Controller in another module?

Viewed 5850

I have a controller "MyController" and a directive "MyDirective" in separate modules "app" and "directiveModule" respectively. DirectiveModule has been injected into the angular.module of "app".

The issue I am having is as part of "app", I have a controller that emits an event "TEST" that the controller for the directive does not pick up. How can I successfully get the directive of its own module to catch the emit? Is this possible? (Note: I tried $scope originally, then used $rootScope, but both do not make a difference.)

My controller:

app.controller('MyController', function($scope, $rootScope) {
  $rootScope.$emit('TEST');
});

My directive:

directiveModule.directive('MyDirective', ['$rootScope', 'MyService',
function($rootScope, MyService) {

return {
   restrict: 'E',
   controller: ['$scope', '$rootScope', function($scope, $rootScope) {
        $rootScope.$on('TEST', function() {alert("Event Caught")})

}]};
}];

UPDATE: It looks like my directive has not initiated by the time the event is broadcast. Is there a way to make it such that I could "wait for directive to instantiate" as opposed to waiting an arbitary "1000" ms or another alternative?

3 Answers
Related