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
Post a Comment