Вам необходимо передать событие на все контроллеры.Затем прослушайте это событие и выполните любое действие, например, распечатайте ваше сообщение.Для трансляции потребуется $rootScope.$broadcast
вместе с прослушивателем $scope.$on
, который выполнит функцию (и отобразит сообщение).
Вот рабочая демонстрация:
var app = angular.module('myApp', []);
app.factory("datafactory", function() {
var mouse = {}
mouse.dosum = function() {
return "my world";
}
return mouse;
});
app.controller("mycontroller", function($scope, $rootScope, datafactory) {
$scope.clickme = function() {
$rootScope.$broadcast("some-event");
}
$scope.$on("some-event", function() {
$scope.message = datafactory.dosum()
})
});
app.controller("hellocontroller", function($scope, datafactory) {
$scope.$on("some-event", function() {
$scope.message = datafactory.dosum()
})
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="myApp">
<div ng-controller="mycontroller">
<button ng-click="clickme()">Broadcast</button>
<hr>
[mycontroller] {{message}}
</div>
<hr>
<div ng-controller="hellocontroller">
[hellocontroller] {{message}}
</div>
</div>
</body>
</html>