javascript - How can I send a message from one controller to another in AngularJS? -


i have following set up:

stapp.controller('admintablecontroller', ['$rootscope', '$scope', 'gridservice',              function ($rootscope, $scope, gridservice) {     $scope.$watch('tabledata.$pristine', function (newvalue) {         $rootscope.broadcast("tabledataupdated", {             state: page.$pristine         });     }); }])  stapp.controller('admingridcontroller', ['$rootscope', '$scope', 'gridservice',             function ($rootscope, $scope, gridservice) {     $rootscope.on("tabledataupdated", function (args) {         //args.state have state.         alert(args.state);     }); }]) 

when run code getting message:

object #<object> has no method 'on' 

note tried both $rootscope.on , $scope.on

you must have meant $broadcast , $on (rather broadcast , on), is:

$rootscope.$broadcast("tabledataupdated", { state: page.$pristine }); // ... $rootscope.$on("tabledataupdated", function (args) { // ... 

it's worth noting $broadcast used delegate events child or sibling scopes, whereas $emit bubble events upwards scope's parents, hence;

when choosing $broadcast (and not $emit), 1 should either inject root scope tying $on (as nicely did) or call $on on receiver's isolated scope, child scope of dispatcher.

see this post elaboration on $emit , $broadcast.


Comments

Popular posts from this blog

html5 - What is breaking my page when printing? -

c# - must be a non-abstract type with a public parameterless constructor in redis -

ajax - PHP/JSON Login script (Twitter style) not setting sessions -