varios que otro modulos llamar inyectar funcion entre controladores controlador comunicacion javascript angularjs dependency-injection constants provider

javascript - otro - ng controller que es



Inyectar constante a la configuración de otros módulos usando Angular JS (2)

Me gustaría compartir algunas variables como las rutas base en mi aplicación. Estas variables deben ser accesibles durante la configuración del módulo. Mi opinión era que puedo usar una constante o proveedor para eso.

Tengo varios módulos y cada uno tiene su propia configuración de enrutamiento. En estas configuraciones de enrutamiento, quiero acceder a algunas configuraciones, por ejemplo.

Esto funciona para la configuración de módulo de aplicación pero no para otras configuraciones de módulo (para controladores en otros módulos sí), siempre obtengo "Proveedor desconocido: información de myApp.orders".

var myApp = angular.module(''myApp'', [''myApp.orders'']); myApp.constant(''info'', { version : ''1.0'' }); myApp.config(function(info) { console.log(''app config: '' + info.version); }); myApp.controller(''MyController'', function (info) { console.log(''controller: '' + info.version); }); var orders = angular.module(''myApp.orders'', []); // Remove comments to see it fail. //orders.config(function(info) { // console.log(''orders config: '' + info.version); //});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myApp" class="container" ng-controller="MyController"> </div>

Supongo que me perdí un pequeño detalle, ¿tienes alguna idea?


No sé si mi solución es la más bonita, pero puse en mi index.html una definición de CONFIG que hago referencia desde otros componentes. Genero mi index.html con el código del lado del servidor para que pueda establecer los valores cuando se inicia el programa. Es decir, uso index.cshtml pero con la misma facilidad index.php u otra tecnología. Aquí está mi aspecto de index.html:

.... <script type="text/javascript"> var usingMockDataGlobal = true; </script> .... <script type="text/javascript"> (function () { ''use strict''; var configData = { codeCampType: ''angu'', loggedInUsername: ''peter'', mockData: usingMockDataGlobal }; angular.module(''baseApp'').constant(''CONFIG'', configData); })(); </script>


Su constante de info está definida en su módulo myApp . Si entiendo su pregunta correctamente, le gustaría usar las constantes en otros módulos (por ejemplo, el módulo myApp.orders). Si es así, entonces necesita inyectar myApp en myApp.orders, pero parece que quiere hacer lo contrario. Una solución es desacoplar las constantes en un módulo independiente e inyectarlo como una dependencia cuando sea necesario.

angular.module(''constants'', []) .constant(...); angular.module(''myApp'', [''constants'', ''myApp.orders'']) ... angular.module(''myApp.orders'', [''constants'']) ...