Как я могу динамически добавлять контроллеры в app.module () в AngularJS? - PullRequest
0 голосов
/ 17 января 2020

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

Что мешает мне передать параметры (динамически созданные контроллеры) для добавления к переменной модуля angular?

это фрагмент JS код:

app.controller('mainController', ["$scope", function ($scope) {.....

   //.... a lot of code...

  function createControllers(ControllerName, tab) {      
      app.controller(ControllerName, function (
          $scope,
          $rootScope,
          $http,

          ) {    
            console.log(ControllerName);
            init($scope, $rootScope, tab);
            obtenerParametros($http);
            watch($scope);
            guardarParametros($scope, $rootScope, tab);
            EditarParametros($scope, $rootScope, "Correcciones");
            limpiarParametro($scope, tab);
            eliminarParametro($scope, $rootScope, tab);
           SeleccionarParametro($scope, $rootScope);    
           mostrarFormatoPorDefecto($scope);
            if (ControllerName === 'GeneralController') {
                console.log('yes, Im the first');
            }   
        });
   }

  createControllers("GeneralController", "General");
  createControllers("ParametrosController", "CEMS");    
  createControllers("CorreccionesController", "Correcciones");
  createControllers("CilindrosController", "Cilindros");
  createControllers("EquiposController", "Equipos");
  createControllers("DPController", "DP");
  createControllers("MPController", "MP");

1 Ответ

0 голосов
/ 17 января 2020

Каркас AngularJS работает в двух фазах: фаза config и фаза run. Контроллеры могут быть добавлены только во время фазы config. После запуска фазы run приложение не может изменить свою конфигурацию, включая добавление дополнительных контроллеров, директив, фильтров, служб и т. Д. c.

Чтобы добавить контроллеры в модуль приложения в config phase:

app.config(["$controllerProvider", function ($controllerProvider) {

  //.... a lot of code...

  function createConstructor(ControllerName, tab) {      
     function controllerConstructor($scope, $rootScope, $http) {    
        console.log(ControllerName);
        init($scope, $rootScope, tab);
        obtenerParametros($http);
        watch($scope);
        //...
        mostrarFormatoPorDefecto($scope);
        if (ControllerName === 'GeneralController') {
            console.log('yes, Im the first');
        }   
     }
     controllerConstructor.$inject = ["$scope", "$rootScope", "$http"];
     return controllerConstructor;
   }

   function register(controllerName, tab) {
       var constructorFn = createConstructor(controllerName, tab);
       $controllerProvider.register(controllerName, constructorFn);
   } 

   register("GeneralController", "General");
   register("ParametrosController", "CEMS");    
   register("CorreccionesController", "Correcciones");
   register("CilindrosController", "Cilindros");
   register("EquiposController", "Equipos");
   register("DPController", "DP");
   register("MPController", "MP");
}])

Для получения дополнительной информации см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...