2013-12-18 23 views

Odpowiedz

611

Oto kolejność powołanie:

  1. app.config()
  2. app.run()
  3. funkcji kompilacji dyrektywy (jeśli znajdują się one w DOM)
  4. app.controller()
  5. funkcje linku dyrektywie (ponownie , jeśli znaleziono)

Oto simple demo, gdzie można obejrzeć każde wykonanie (i eksperymentować, jeśli chcesz).

Od Angular's module docs:

Run bloki - zostanie wykonany po utworzeniu wtryskiwacz i są wykorzystywane do kickstart aplikację . Tylko wystąpienia i stałe mogą być wstrzykiwane do bloków run. Ma to zapobiec dalszej konfiguracji systemu podczas działania aplikacji.

Bloki Run są najbliższe Angularowi w stosunku do głównej metody. Uruchomiony blok to kod, który należy uruchomić, aby uruchomić aplikację. To jest wykonywane po skonfigurowaniu wszystkich usług i utworzeniu wtryskiwacza . Bloki Run zazwyczaj zawierają kod, który jest trudny do testowania jednostkowego, i dlatego powinny być zadeklarowane w izolowanych modułach , aby można je było zignorować w testach jednostkowych.

Jedna z sytuacji, w których używane są bloki uruchamiania, to authentications.

+3

@KayakDave Nie jestem pewien, czy to jest off topic, ale w odniesieniu do zlecenia, o którym wspomniałeś powyżej, kiedy usługi byłyby inicjowane i kiedy byłyby uruchamiane? – jonnie

+3

Prawdopodobnie trochę za późno, aby Ci pomóc @jonnieM, ale usługi będą wykonywane w zależności od tego, kiedy będą potrzebne w pierwszej kolejności - tzn. Jeśli najpierw potrzebujesz usługi w bloku run, wykonasz ją bezpośrednio przed tym blokiem. Jeśli chodzi o dostawców, to irytująco, będą one uruchamiane przed lub po blokach konfiguracyjnych - w zależności od tego, w jakiej kolejności występują w kodzie. Biorąc pod uwagę, że jedyny przypadek bezpośredniego użycia dostawcy jest na etapie konfiguracji, nie wydaje się to właściwe. –

+2

Witam, rozwidlałem i zmieniłem próbkę Twojego fiddle, aby pokazać również obciążenie fabryczne: https://jsfiddle.net/lorezz/4cxgpLqj/1 – user1490729

26

Konkretnie ...

Jak i gdzie app.run() używane? Po definicji modułu lub po app.config(), po app.controller()?

Gdzie:

W swoim package.js Np /packages/dashboard/public/controllers/dashboard.js

Jak:

aby wyglądał jak ten

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