Подставить значение из одного контроллера в другой в Angularjs?

В AngularJS есть несколько способов передать значения от одного контроллера к другому. Вот несколько примеров:

1. Использование сервисов: Можно создать сервис, который будет хранить значение и внедрить его в оба контроллера. Внутри сервиса можно создать переменную для хранения значения и методы для получения и установки этого значения. В одном контроллере можно использовать методы сервиса для установки значения, а в другом контроллере - для его получения.

Пример:

   angular.module('myApp').service('myService', function() {
     var value;

     this.setValue = function(newValue) {
       value = newValue;
     };

     this.getValue = function() {
       return value;
     };
   });

   angular.module('myApp').controller('Controller1', function($scope, myService) {
     $scope.setValue = function(newValue) {
       myService.setValue(newValue);
     };
   });

   angular.module('myApp').controller('Controller2', function($scope, myService) {
     $scope.value = myService.getValue();
   });

В данном примере контроллер Controller1 может использовать метод setValue сервиса myService, чтобы установить значение, а контроллер Controller2 использует метод getValue, чтобы получить это значение.

2. Использование $rootScope: $rootScope является всевдоглобальным объектом, который виден во всех контроллерах. Можно установить значение в одном контроллере, а затем получить его в другом.

Пример:

   angular.module('myApp').controller('Controller1', function($scope, $rootScope) {
     $scope.setValue = function(newValue) {
       $rootScope.value = newValue;
     };
   });

   angular.module('myApp').controller('Controller2', function($scope, $rootScope) {
     $scope.value = $rootScope.value;
   });

В данном примере контроллер Controller1 устанавливает значение $rootScope.value, а контроллер Controller2 просто получает его.

3. Использование $broadcast и $on: Можно использовать механизм событий, предоставляемый AngularJS, для передачи значения от одного контроллера к другому. Можно вызывать $broadcast в одном контроллере и прослушивать событие с помощью $on в другом контроллере.

Пример:

   angular.module('myApp').controller('Controller1', function($scope, $rootScope) {
     $scope.setValue = function(newValue) {
       $rootScope.$broadcast('valueChanged', newValue);
     };
   });

   angular.module('myApp').controller('Controller2', function($scope, $rootScope) {
     $rootScope.$on('valueChanged', function(event, newValue) {
       $scope.value = newValue;
     });
   });

В данном примере контроллер Controller1 вызывает $broadcast события valueChanged, а контроллер Controller2 прослушивает это событие с помощью $on. Когда событие происходит, он получает новое значение и устанавливает его в свою область видимости.

Описанные выше методы позволяют передавать значения между контроллерами в AngularJS. Какой из них выбрать, зависит от вашего конкретного случая использования и структуры вашего приложения.