2013-01-11 5 views
35

Ich habe eine Fabrik/Service in meiner eckigen App erstellt.Wie man eckige Dienste im Browser debuggt

Ich möchte es im Browser debuggen. Gibt es eine Möglichkeit, dass ich auf seine Instanz zugreifen und überprüfen kann, was der Wert seiner Funktionen und Variablen ist.

Der Winkel Umfang

angular.element(e).scope() 

Gibt es eine ähnliche Art und Weise Fabriken zugreifen können unter Verwendung zugegriffen?

Antwort

65

Ich glaube, Sie so etwas wie diese verwenden:

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

Und da AngularJS Dienste sind Singletons, diese auf jedem angular.element tun immer die gleiche Service-Instanz/Objekt zurück.

+4

+1 Das ist großartig. Das Debugging wird dadurch viel einfacher. Wenn Sie der eckigen Dokumentation einen Link hinzufügen, wird der Nutzen noch weiter verbessert. ref: http://docs.angularjs.org/api/angular.element – rubish

+1

Ist das noch gültig? Es hat vorher gut funktioniert. Aber jetzt heißt es 'ReferenceError: e ist nicht definiert' –

+2

@IvanWang Ja, es ist immer noch gültig. Nur getestet und es funktioniert. Sind Sie sicher, dass die Variable "e" definiert und zugänglich ist? (könnte es ein Problem sein wie [das] (http://stackoverflow.com/questions/13326351/uncaught-referenceerror-e-is-not-defined)?) – bmleite

8

Injizieren Sie Ihren Dienst in jeden Controller und dann console.log(myService);

Fiddle.

+0

+1 für die Antwort – murtaza52

6

Wie @bmleite sagte, können Sie verwenden:

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

können Sie wählen das wollte DOM-Element (use ‚Elements "Registerkarte in den Chrome-Entwicklertools oder Registerkarte" HTML "in Firefox/Firebug) und verwenden Sie $ 0, um auf die Registerkarte" Konsole "zu zeigen.

Das einfachste zu wählende Element ist das, auf dem Sie Ihre ngApp-Direktive haben. Der letzte Code ist:

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

Dann haben Sie Zugriff auf alle seine Variablen und Funktionen:

myService.getConfig('dev'); 
4

Versuchen ng-inspect Chrome-Erweiterung.

$ get ('serviceName') in der Konsole gibt die Service- oder Factory-Instanz zurück.

+2

ng-inspect ist viel höher als angular Batarang bewertet –

Verwandte Themen