2013-08-08 24 views
23

Volevo scoprire la differenza tra le funzioni .config e .run in AngularJS. Stavo usando il mio .config per l'impostazione delle rotte, ma avevo alcuni $on per guardare l'inizio del cambiamento di rotta e gli eventi di successo..config, .run, AppCtrl - dove inserire i percorsi?

Ho quindi spostato un po 'di questo codice su .run poiché stavo riscontrando alcuni problemi di immissione delle dipendenze in .config.

Alla fine ho spostato un po 'di questo ad un CommonAppController che ho impostato sul mio <body>.

Avevo anche 2 .config e sembrava funzionare bene, ma sicuramente non è giusto?

Qualcuno può dare un po 'di informazioni su quale metodo utilizzare?

+0

Puoi condividere, per favore, come hai gestito nel controller comune? Ho provato a utilizzare il controller di root e reindirizzare alla pagina di accesso se l'utente non è autenticato. Il problema era che il controller figlio era ancora invocato. Qualsiasi aiuto è molto apprezzato. – user3151766

risposta

69

I blocchi di configurazione e i blocchi di esecuzione vengono eseguiti in diversi punti del bootstrap dell'applicazione e dispongono di diversi locali di iniezione a loro disposizione. Ecco un riepilogo di ciò che puoi trovare nello AngularJS documentation.

I blocchi di configurazione (registrati con module.config()) vengono eseguiti durante la registrazione del provider e possono essere iniettati solo provider e costanti (vedere module.provider() e module.constant()). Questo è in genere in cui si configurano cose a livello di applicazione, come ad esempio $routeProvider. Cose che devono essere configurate prima che i servizi vengano creati.

I blocchi di esecuzione (registrati con module.run()) vengono eseguiti dopo che l'iniettore ha tutti i provider. Ora, tutte le istanze e le costanti possono essere iniettate. Questo è in genere in cui si configurano i servizi, $rootScope, eventi e così via.

È possibile avere più di entrambi e vengono eseguiti nell'ordine in cui sono stati registrati nel modulo. Alcune persone preferiscono registrare un blocco di configurazione prima di ogni gruppo di controllori per registrare i percorsi su questi controller, ad esempio.

+0

Grazie Steve, ottima spiegazione! Quindi, per quanto riguarda la visione di eventi - eventi globali, come changelocationstart ecc .... Esegui suona come un ottimo posto, ma potrei farlo in un controller di app - qualsiasi motivo per usarne uno rispetto all'altro? Grazie – Martin

-1

Il blocco .config viene eseguito durante la fase di registrazione e configurazione del provider. E 'un blocco a livello di modulo.

Il blocco .run viene eseguito dopo il blocco di configurazione. È usato per iniettare servizi e costanti.

Problemi correlati