You can use $broadcast to broadcast the event to rootScope and use $on to define a listener to listen for that particular event.
function ControllerA($scope, myService, $rootScope) { $scope.message = myService.getMessages(); $scope.updateMessage = function () { $scope.message = 'Hello Max'; $rootScope.$broadcast("HelloEvent", { msg: $scope.message }); }; } function ControllerB($scope, myService, $rootScope) { $scope.message = myService.getMessages(); $rootScope.$on("HelloEvent", function (event, message) { $scope.message = message.msg; }); }
Updated:
I got the above solution before you updated your question. If you do not want to use $ broadcast or $ on, you can share the object via $rootScop e, like this
function ControllerA($scope, myService, $rootScope) { $scope.message = myService.getMessages(); $scope.updateMessage = function () { $scope.message = 'Hello Max'; $rootScope.message = 'Hello Max'; }; } function ControllerB($scope, myService, $timeout, $rootScope) { $scope.message = myService.getMessages(); $rootScope.$watch('message', function (oldV, newV) { if(oldV === undefined && oldV === newV) return; $scope.message = $rootScope.message; }); }
Demo using broadcast Demo without using broadcast
zsong source share