Documentazione di AngularJS app.run ()?


337

Come e dove viene app.run()utilizzato? Dopo la definizione del modulo, dopo app.config()o dopo app.controller()?

Sto adottando il BreezeJS Angular Q , che chiede se un determinato codice può essere eseguito nella app.run()funzione.


2
e dopo ogni modulo angolare .constants () è stato impostato
alfonsob il

Risposte:


650

Ecco l'ordine di chiamata:

  1. app.config()
  2. app.run()
  3. funzioni di compilazione della direttiva (se si trovano nel dom)
  4. app.controller()
  5. funzioni di collegamento della direttiva (di nuovo, se trovato)

Ecco una semplice demo in cui puoi guardare ognuno in esecuzione (e sperimentare se lo desideri).

Dai documenti del modulo di Angular :

Esegui blocchi : viene eseguito dopo la creazione dell'iniettore e viene utilizzato per avviare l'applicazione. Solo le istanze e le costanti possono essere iniettate in blocchi di esecuzione. Questo per impedire un'ulteriore configurazione del sistema durante il runtime dell'applicazione.

I blocchi di corsa sono la cosa più vicina in Angolare al metodo principale. Un blocco di esecuzione è il codice che deve essere eseguito per avviare l'applicazione. Viene eseguito dopo la configurazione di tutti i servizi e la creazione dell'iniettore. I blocchi di esecuzione in genere contengono codice difficile da testare l'unità, e per questo motivo devono essere dichiarati in moduli isolati, in modo che possano essere ignorati nei test unitari.

Una situazione in cui vengono utilizzati i blocchi di esecuzione è durante le autenticazioni .


4
@KayakDave Non sono sicuro che questo sia off topic ma in relazione all'ordine di esecuzione sopra menzionato, quando verranno avviati i Servizi e quando verranno eseguiti?
jonnie,

3
Probabilmente è un po 'tardi per aiutarti @jonnieM, ma i servizi verranno eseguiti in base al momento in cui sono necessari per primi, ovvero se hai bisogno di un servizio in un blocco di esecuzione, verrà eseguito immediatamente prima di quel blocco. Per quanto riguarda i provider, fastidiosamente verranno eseguiti prima o dopo i blocchi di configurazione, a seconda dell'ordine in cui vengono inseriti nel codice. Considerando che l'unica volta che si utilizza direttamente un provider è in fase di configurazione, questo non sembra giusto.
Zac Seth,

2
ciao, ho biforcato e modificato il tuo campione di violino per mostrare anche il carico di fabbrica: jsfiddle.net/lorezz/4cxgpLqj/1
Lorezz,

1
Eccezionale. Per essere accurati, le funzioni app.constant () vengono invocate prima di tutto ... E app.factory () e altre funzioni di servizio vengono invocate "pigramente". In altre parole, Angular utilizza le funzioni fornite per creare un'istanza di servizio solo quando un controller o un altro servizio ha bisogno di essere iniettato, anche se molto tempo dopo l'inizializzazione dell'app.
Niko Bellic,

In un progetto ionico, per impostazione predefinita viene chiamata run prima della configurazione. Perché ?
Rayjax,

28

In particolare ...

Come e dove viene app.run()utilizzato? Dopo la definizione del modulo o dopo app.config(), dopo app.controller()?

Dove:

Nel tuo package.js ad es /packages/dashboard/public/controllers/dashboard.js

Come:

Fallo sembrare così

var app = angular.module('mean.dashboard', ['ui.bootstrap']);

app.controller('DashboardController', ['$scope', 'Global', 'Dashboard',
    function($scope, Global, Dashboard) {
        $scope.global = Global;
        $scope.package = {
            name: 'dashboard'
        };
        // ...
    }
]);

app.run(function(editableOptions) {
    editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.