In AngularJS esiste una soluzione specifica per permettere a due controller separati di comunicare tra loro.
La soluzione consiste nell'usare gli eventi:
angular.module('MyApp').controller('FirstCtrl', ['$scope', function($scope) {
$scope.$on('my-event', function(event, data) {
console.log(data); // {test: 1}
});
}]);
angular.module('MyApp').controller('SecondCtrl', ['$rootScope', '$scope', function($rootScope, $scope) {
$rootScope.$broadcast('my-event', {test: 1});
}]);