La pregunta principal: ¿es posible? Lo intenté sin suerte ..
app.js principal
...
var app = angular.module('myApp', ['services']);
app.config(['customProvider', function (customProvider) {
}]);
...
propio proveedor
var services = angular.module('services', []);
services.provider('custom', function ($http) {
});
Y tengo tal error:
Uncaught Error: Unknown provider: $http from services
¿Algunas ideas?
¡Gracias!
javascript
angularjs
angular-services
Kosmetika
fuente
fuente

app.configparteRespuestas:
La conclusión es:
Detalles:
El marco angular tiene un proceso de inicialización de 2 fases:
FASE 1: Configuración
Durante la
configfase, todos los proveedores se inicializan y todas lasconfigsecciones se ejecutan. Lasconfigsecciones pueden contener código que configura los objetos del proveedor y, por lo tanto, se pueden inyectar con los objetos del proveedor. Sin embargo, dado que los proveedores son las fábricas de los objetos de servicio y en esta etapa los proveedores no están completamente inicializados / configurados -> no puede pedirle al proveedor que cree un servicio para usted en esta etapa -> en la etapa de configuración no puede usar / servicios de inyección . Cuando se completa esta fase, todos los proveedores están listos (no se pueden realizar más configuraciones de proveedores una vez completada la fase de configuración).FASE 2: Ejecutar
Durante la
runfaserunse ejecutan todas las secciones. En esta etapa, los proveedores están listos y pueden crear servicios -> durante larunfase puede usar / inyectar servicios .Ejemplos:
1. La inyección del
$httpservicio a la función de inicialización del proveedor NO funcionaráComo estamos intentando inyectar el
$httpservicio en una función que se ejecuta durante laconfigfase, obtendremos un error:Lo que realmente dice este error es que el
$httpProviderque se usa para crear el$httpservicio aún no está listo (ya que todavía estamos en laconfigfase).2. Inyectar el
$httpservicio a la función de inicialización del servicio FUNCIONARÁ :Dado que ahora estamos inyectando el servicio en la función de inicialización del servicio, que se ejecuta durante la
runfase, este código funcionará.fuente
<script>var config = <% = mySettings.toJson() %>;</script>). Esto se puede hacer usando un motor de plantillas como Smarty para PHP, Jinja2 para Python, Nunchucks para NodeJS, etc.Esto podría darle un pequeño apalancamiento:
Pero tenga cuidado, las devoluciones de llamada de éxito / error pueden mantenerlo en una condición de carrera entre el inicio de la aplicación y la respuesta del servidor.
fuente
angular.injector(['mymodule']), pero no estoy seguro de que pueda utilizar este enfoque para el$httpservicio. Aunque quiero decir que sí. No estoy seguro de si esto ayuda o no: - /Esta es una vieja pregunta, parece que tenemos algo de huevo de gallina si queremos confiar en la capacidad central de la biblioteca.
En lugar de resolver el problema de manera fundamental, lo que hice fue pasar por alto. Crea una directiva que envuelva todo el cuerpo. Ex.
Ahora
mc-bodydebe inicializarse antes de renderizar (una vez), ej.Authes un servicio o proveedor, ej.Me parece que tengo el control sobre el orden del bootstrap, es después de que el bootstrap normal resuelve toda la configuración del proveedor y luego intento inicializar la
mc-bodydirectiva.Y esta directiva me parece que puede estar por delante del enrutamiento, porque el enrutamiento también se inyecta a través de una directiva ex.
<ui-route />. Pero puedo equivocarme en esto. Necesita más investigación.fuente
En respuesta a su pregunta, "¿Alguna idea?", Habría respondido con "sí". ¡Pero espera hay mas!
Sugiero usar JQuery en la configuración. Por ejemplo:
fuente