Angular: $broadcast example

http://angularjs.org/

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<div ng-app='myApp'>
    <div ng-controller="myController">
        {{message}}
        <my-directive></my-directive>
    </div>
    <div ng-controller="myController2">
        {{message2}}
    </div>    
</div>

JavaScript

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

app.directive('myDirective', [ '$rootScope', 'myService', function ($rootScope, myService) {
    return {
        restrict: 'E',
        scope: true,
        template: '<div></div>',
        controller: function ($scope, $element) {
            var someMethod = function () {
                var a = 1,
                    b = 2;
                return myService.sum;
            };
            
            $rootScope.$broadcast('someEvent', {
                addFn: someMethod
            });
        }
    };
}]);

app.controller('myController', ['$scope', '$log', function ($scope, myService, $log) {
    $scope.message = '';
    $scope.$on('someEvent', function (e,d) {
        try {
            $scope.message = d.addFn()(1,4);
        } catch (ex) {
            $log.error(ex);
        }
    });


}]);

app.controller('myController2', ['$scope', '$rootScope', '$log', function ($scope, $rootScope, $log) {
    $scope.message2 = '';
    $scope.$on('someEvent', function (e,d) {
        try {
            $scope.message2 = d.addFn()(1,5);
        } catch (ex) {
            $log.error(ex);
        }
    });
}]);

app.factory('myService', function () {
    return {
        sum: function (a, b) {
            return a + b;
        }
    };
});