function firstCtrl($scope){$scope.$broadcast('someEvent', [1,2,3]);}
function secondCtrl($scope){$scope.$on('someEvent', function(event, mass) { console.log(mass); });}
In case there is no parent-child relation between your scopes youcan inject $rootScope into the controller and broadcast the eventto all child scopes (i.e. also secondCtrl).
function firstCtrl($rootScope){$rootScope.$broadcast('someEvent', [1,2,3]);}
Finally, when you need to dispatch the event from child controllerto scopes upwards you can use $scope.$emit. If scope of firstCtrl is parent of the secondCtrl scope:
function firstCtrl($scope){$scope.$on('someEvent', function(event, data) { console.log(data); });}
function secondCtrl($scope){$scope.$emit('someEvent', [1,2,3]);}
function ParentController($scope, testService) {testService.getList().then(function(data) {$scope.list = testService.list;}).finally(function() {$scope.$emit('listFetched');})
function ChildController($scope, testService) {$scope.$on('listFetched', function(event, data) {// use the data accordingly})}
$rootScope.$broadcast('myEvent',$scope.data);//Here `myEvent` is event name
$rootScope.$on('myEvent', function(event, data) {} //listener on `myEvent` event