Невозможно отправить данные на другой контроллер AngularJS - PullRequest
0 голосов
/ 26 ноября 2018

ОБНОВЛЕНИЕ ПОЖАЛУЙСТА, ПОМОГИТЕ:

Попробовал то, что вы предложили, проблема в том, что я пытаюсь передать значение другому «модулю».Пытался создать сервис, но функция не работала, может быть, я что-то пропустил.Сделанный пример с использованием rootScope:

var informes = angular.module('informes', ['angular-drupal', 'ui.bootstrap']);

informes.controller('InformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {

       $rootScope.nodeID = function(item){
         var item = "hi";
         console.log(item);
       }

}]);

Консоль hi

Работает в первом модуле, но ...

В моем другом модуле с другой страницей ...

var nodeInformes = angular.module('node-informes', ['informes']);

nodeInformes.controller('NodeInformesCtrl', ['drupal', '$rootScope', '$scope', '$http', 'InformesFtry', function(drupal, $rootScope, $scope, $http, InformesFtry) {

          $scope.nodeID2 = $rootScope.nodeID(item);
          console.log($scope.nodeID2);

}]);

Консоль: item is Undefined

Я пытаюсь понять, как я могу передать функцию другому модулю, но кажется, что это невозможно.Я не пытался использовать тот же модуль, но он работает, если контроллер является дочерним от первого контроллера.

Я очень благодарен за любую помощь, которую вы можете предоставить мне для передачи функции с параметром в другой модуль с другим контроллером.Я пытаюсь учиться с этим.Спасибо !!!

РЕДАКТИРОВАТЬ: Если я добавляю первый контроллер в качестве зависимости, это дает мне Неизвестный поставщик ... Извините за мою ошибку.

1 Ответ

0 голосов
/ 26 ноября 2018

В Angular JS существует три способа взаимодействия контроллеров с другими контроллерами, и любой другой метод вызывает проблемы:

Использование службы:

Использованиеуслуга как посредник между контроллерами:

function MyService() {
  this.MyObject = {};
}

function ctrl1(MyService) {
  Myservice.MyObject = {
   someData: "someValue"
  };
}

function ctrl2(MyService) {
  $scope.someValue = MyService.MyObject.someData;
}

Использование системы событий

  function ctrl1($rootScope) {
  $rootScope.$broadcast("my-event", {someData: "someValue"});
}

function ctrl2($scope) {
  $scope.$on("my-event", function(event, params) {
    $scope.someData = params.someData;
  });
}

Область наследования

 <div ng-controller="ctrl1">
   <div ng-controller="ctrl2">
   </div>
 </div>

function ctrl1($scope) {
  $scope.someData = "someValue";
}

function ctrl2($scope) {
  console.log($scope.$parent.someData); //"someValue"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...