2013-01-11 13 views
35

Stworzyłem fabrykę/usługę w mojej aplikacji kątowej.jak debugować usługi kątowe w przeglądarce

Chcę debugować go w przeglądarce. Czy istnieje sposób, że mogę uzyskać dostęp do jego instancji i sprawdzić, jaka jest wartość jego funkcji i zmiennych.

Zakres kątowy można uzyskać za pomocą

angular.element(e).scope() 

Czy istnieje podobny sposób dostępu do fabryki?

Odpowiedz

65

Wierzę, że można używać czegoś takiego:

angular.element(e).injector().get('serviceName') 

A ponieważ usług angularjs są singletons, robiąc to na każdym angular.element zawsze zwróci tej samej instancji usługi/przedmiot.

+4

+1 To jest świetne. Debugowanie staje się o wiele łatwiejsze. Dodanie linku do kanciastej dokumentacji jeszcze bardziej poprawi użyteczność. ref: http://docs.angularjs.org/api/angular.element – rubish

+1

Czy to jest nadal aktualne? To działało dobrze wcześniej. Ale teraz mówi: "ReferenceError: e nie jest zdefiniowane" –

+2

@IvanWang tak, to wciąż jest poprawne. Właśnie przetestowany i działa. Czy jesteś pewien, że zmienna 'e' jest zdefiniowana i dostępna? (czy może to być problem taki jak [this] (http://stackoverflow.com/questions/13326351/uncaught-referenceerror-e-is-not-defined)?) – bmleite

8

wstrzyknąć swoje usługi do każdego kontrolera, a następnie console.log(myService);

Fiddle.

+0

+1 za odpowiedź – murtaza52

6

Jak @bmleite powiedział, można użyć:

angular.element({DOM element}).injector().get('serviceName') 

Można wybrać chciał elementu DOM (elementy użycia” "kartę w Chrome Developers Tools lub zakładkę" HTML "w Firefox/Firebug), a następnie użyj $ 0, aby wskazać ją w zakładce" Console ".

Najprostszym elementem do wyboru jest ten, na którym masz dyrektywę ngApp. Ostateczny kod jest:

var myService = angular.element($0).injector().get('serviceName'); 

Wtedy masz dostęp do wszystkich jego funkcji i zmiennych:

myService.getConfig('dev'); 
4

Spróbuj ng-inspect chrom rozszerzenie.

$ get ('serviceName') w konsoli zwróci usługę lub instancję fabryczną.

+2

ng-inspect jest znacznie wyżej oceniony niż Angular Batarang –