Created
August 20, 2015 03:15
-
-
Save gengue/1508b7a6d6544b3d77d5 to your computer and use it in GitHub Desktop.
Angular events tutorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Source http://stackoverflow.com/questions/14502006/working-with-scope-emit-and-on | |
/* | |
First of all, parent-child scope relation does matter. You have two possibilities to emit some event: | |
$broadcast -- dispatches the event downwards to all child scopes, | |
$emit -- dispatches the event upwards through the scope hierarchy. | |
I don't know anything about your controllers (scopes) relation, but there are several options: | |
If scope of firstCtrl is parent of the secondCtrl scope, your code should work by replacing $emit by $broadcast in firstCtrl: | |
*/ | |
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 you can inject $rootScope into the controller and broadcast the event to 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 controller to 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]); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment