2013-08-08 8 views
23

Chciałem dowiedzieć się, jaka jest różnica między funkcjami .config i .run w AngularJS. Używałem mojego .config do konfigurowania tras, ale miałem kilka $on do oglądania zmian trasy i zdarzeń sukcesu..config, .run, AppCtrl - gdzie umieścić trasy?

Następnie przeniosłem część tego kodu do .run, ponieważ miałem pewne problemy z wprowadzeniem zależności w .config.

Ostatecznie przeniosłem niektóre z tego do CommonAppController, które ustawiłem na moim <body>.

Miałem również 2 .config i wydawało się, że działa dobrze, ale na pewno to nie jest w porządku?

Czy ktoś może się dowiedzieć, jakiej metody użyć?

+0

Czy możesz podzielić się tym, jak sobie poradziłeś w zwykłym kontrolerze? Próbowałem użyć kontrolera root i przekierować do strony logowania, jeśli użytkownik nie jest uwierzytelniony. Problem polegał na tym, że kontroler ds. Dzieci wciąż był wywoływany. Każda pomoc jest wysoko ceniona. – user3151766

Odpowiedz

69

Bloki konfiguracyjne i bloki uruchomieniowe są wykonywane w różnych punktach uruchamiania aplikacji i mają do dyspozycji różnych użytkowników wtrysku. Oto podsumowanie tego, co można znaleźć w AngularJS documentation.

bloki konfiguracyjne (zarejestrowane module.config()) zostanie wykonany podczas rejestracji dostawcy i może być podawany wyłącznie usługodawców i stałych (patrz module.provider() i module.constant()). Zazwyczaj jest to miejsce, w którym można skonfigurować całą aplikację, taką jak $routeProvider. Rzeczy, które należy skonfigurować przed utworzeniem usług.

Bloki Run (zarejestrowane w module.run()) zostają wykonane po tym, jak wtryskiwacz ma wszystkich dostawców. Teraz można wstrzykiwać wszystkie instancje i stałe. Zazwyczaj jest to miejsce, w którym można skonfigurować usługi, $rootScope, zdarzenia i tak dalej.

Możesz mieć wiele z nich i są one wykonywane w kolejności, w jakiej zostały zarejestrowane w module. Niektórzy wolą zarejestrować blok konfiguracji przed każdą grupą kontrolerów, na przykład rejestrując trasy do tych kontrolerów.

+0

Dzięki Steve, wielkie wyjaśnienie! Tak więc w odniesieniu do oglądania wydarzeń - wydarzeń globalnych, takich jak changelocationstart itp. Uruchomić dźwięki jak świetne miejsce, ale faktycznie mógłbym to zrobić w kontrolerach aplikacji - jakikolwiek powód do korzystania z jednego nad drugim? Dzięki – Martin

-1

Blok .config jest wykonywany podczas fazy rejestracji i konfiguracji dostawcy. To "blok poziomu modułów.

Blok .run jest wykonywany po bloku konfiguracji. Służy do wstrzykiwania usług i stałych.

Powiązane problemy