angularjs - routeprovider - .config,.run, AppCtrl-¿dónde colocar rutas?
ngroute angularjs (2)
El bloque .config
se ejecuta durante la fase de registro y configuración del proveedor. Es un bloque de nivel de módulo.
El bloque .run
se ejecuta después del bloque de configuración. Se utiliza para inyectar servicios y constantes.
Quería descubrir la diferencia entre las funciones .config
y .run
en AngularJS. Estaba usando mi .config
para configurar rutas, pero tenía algunos $on
''s para ver los eventos de inicio y éxito del cambio de ruta.
Luego moví parte de este código a .run
porque tenía algunos problemas de inyección de dependencias en .config
.
Finalmente moví algo de esto a un CommonAppController
que he puesto en mi <body>
.
También tuve 2 .config
''s y parecía estar funcionando bien, pero seguramente esto no es correcto?
¿Alguien puede dar una pequeña idea de qué método usar?
Los bloques de configuración y los bloques de ejecución se ejecutan en diferentes puntos de la aplicación bootstrap y tienen diferentes locales de inyección a su disposición. Aquí hay un resumen de lo que puede encontrar en la documentación de AngularJS .
Los bloques de configuración (registrados con module.config()
) se ejecutan durante el registro del proveedor, y solo se pueden inyectar proveedores y constantes (ver module.provider()
y module.constant()
). Por lo general, aquí es donde se configuran los elementos de toda la aplicación, como el $routeProvider
. Cosas que deben configurarse antes de crear los servicios.
Los bloques de ejecución (registrados con module.run()
) se ejecutan después de que el inyector tenga todos los proveedores. Ahora, todas las instancias y constantes pueden ser inyectadas. Por lo general, aquí es donde se configuran los servicios, $rootScope
, eventos, etc.
Puede tener varios de ellos y se ejecutan en el orden en que se registraron en el módulo. Algunas personas prefieren registrar un bloque de configuración antes de cada grupo de controladores para registrar las rutas a estos controladores, por ejemplo.