2012-11-30 13 views
16

Ich habe eine gemeinsame Funktion, die den Umfang des obersten Elements (Dokument) in meiner AngularJS-Anwendung zurückgibt.

function topScope() { 
    return angular.element(document).scope(); 
} 

Dies gilt immer, und ich bin immer in der Anwendung befindet sich auf Zugang zu allen subscopes garantiert (ob es in Steuerungen oder Richtlinien sein).

Hier ist ein Beispiel dafür, was ich es verwenden würde:

topScope().$emit('pageReady'); 

Jetzt habe ich bemerkt, dass $ rootScope funktioniert auch die gleiche Art und Weise.

$rootScope.$emit('pageReady'); 

Das funktioniert auch und erreicht den gleichen Effekt. Aber da $ rootScope als Bereich "$ scope off the shelf" konzipiert ist (jeder erstellte Bereich erbt seine Methoden und Eigenschaften), bedeutet dies immer noch, dass es sich tatsächlich um den obersten Bereich der Seite handelt? Also das übergeordnete Objekt des am Dokumentenknoten angehängten Bereichsobjekts?

+0

Ja, RootScope ist das übergeordnete Element aller Bereiche. – ganaraj

Antwort

23

$rootScope ist ein übergeordneter Bereich aller Bereiche in einer gegebenen AngularJS-Anwendung. Da es möglich ist, mehrere AngularJS-Anwendungen auf einer Seite zu starten (nur manuell, kann dies nicht mit ng-app durchgeführt werden), ist es auch möglich, mehrere $rootScope Instanzen in einem HTML-Dokument zu haben.

Jede $rootScope wird entweder an das Element "angehängt", an dem ngApp deklariert wurde, oder an angular.bootstrap, wie beschrieben here. Der $rootScope ist ein Stamm aller Bereiche für eine AngularJS-Anwendung, aber es gibt keinen "Super-Root" -Bereich, der als übergeordneter Bereich aller anderen Bereiche für ein bestimmtes HTML-Dokument dienen würde.

In Ihrem Fall könnte die Verwendung der $rootScope OK sein, wenn Sie nur eine AngularJS-Anwendung im gesamten HTML-Dokument haben.

+7

Das ist richtig. Randnotiz, wenn Sie zwei $ rootScopes haben, weil Sie zwei Apps haben und Sie brauchen, um miteinander zu sprechen, können Sie $ window verwenden ... Scheint wie ein Randfall, aber es ist erwähnenswert. –

Verwandte Themen