web-dev-qa-db-fra.com

Documentation AngularJS app.run ()?

Comment et où est utilisée app.run()? Après la définition du module, après app.config() ou après app.controller()?

J'adopte le BreezeJS Angular Q , qui demande si certains codes peuvent être exécutés dans la fonction app.run().

330
user3071284

Voici l'ordre d'appel:

  1. app.config()
  2. app.run()
  3. Fonctions de compilation de la directive (si elles se trouvent dans le dom)
  4. app.controller()
  5. fonctions de liaison de la directive (encore une fois, si trouvé)

Voici une démo simple où vous pouvez voir chacun s’exécuter (et expérimenter si vous le souhaitez).

De documentation du module d'Angular :

Les blocs d'exécution - sont exécutés après la création de l'injecteur et sont utilisés pour relancer l'application. Seules des instances et des constantes peuvent être injectées dans des blocs d'exécution. Cela empêche toute configuration ultérieure du système pendant l'exécution de l'application.

Les blocs d'exécution sont l'élément le plus proche de Angular de la méthode principale. Un bloc d'exécution est le code qui doit être exécuté pour lancer l'application. Il est exécuté une fois que tous les services ont été configurés et que l'injecteur a été créé. Les blocs d'exécution contiennent généralement du code qui est difficile à tester, et pour cette raison, il convient de le déclarer dans des modules isolés, afin de pouvoir les ignorer dans les tests unitaires.

Une situation dans laquelle les blocs d'exécution sont utilisés est pendant authentifications .

646
KayakDave

Plus précisément...

Comment et où est utilisée app.run()? Après la définition du module ou après app.config(), après app.controller()?

Où:

Dans votre package.js E.g. /packages/dashboard/public/controllers/dashboard.js

Comment:

Faites-le ressembler à ceci

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'
});
29
Michael Cole