0

Trying to understand it is possible to communicate between Controllers under different modules. Is this even possible?

Here is my test that I am trying to learn from:

HTML

<div ng-app="app">  
    <div ng-controller="AppCtrl">
        <p data-ng-bind="group.name"></p>
        <p data-ng-bind="project.name"></p>
    </div>
    <div ng-controller="ProjectCtrl">
        <p data-ng-bind="group.name"></p>
        <p data-ng-bind="project.name"></p>
    </div>
    <div ng-controller="GroupCtrl">
        <p data-ng-bind="group.name"></p>
        <p data-ng-bind="project.name"></p>
    </div>
</div>

javascript

var app = angular.module('app', ['project', 'group']);
var group = angular.module('group', ['project']);
var project = angular.module('project', ['group']);


app.controller('AppCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
    $scope.project = Project;
    $scope.group = Group;
    $scope.name = 'My App';
}]);

project.controller('ProjectCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
   $scope.project = Project;
    $scope.group = Group;
    $scope.name = 'My Project';
}]);

group.controller('GroupCtrl', ['$scope', 'Project', 'Group', function($scope, $project, $group) {
    $scope.project = Project;
    $scope.group = Group;
    $scope.name = 'My Group';
}]);

http://jsfiddle.net/6kqszmuz/

1 Answer 1

1

Yes it is, using Broadcast or Emit. All controllers have access to a $rootScope. What you can do is broadcast a message to the rootscope, and then define $on methods on your other controllers. These in turn listen to events firing in the rootscope. Have a look at $broadcast in https://docs.angularjs.org/api/ng/type/$rootScope.Scope and $on.

I think you are trying to re-use viewmodels and that's something I wouldn't do.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.