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;
}
};
});