2014-07-07 9 views
23

Ich habe eine AngularJs App. Ich verwende Controller für einige untergeordnete Bereiche. In jedem Controller kann ich eine Anzahl von Variablen setzen, die zu dem entsprechenden Child Scope gehören. Wenn AngularJs einen Controller instanziiert, gibt es einen Konstruktor, in dem ich einen Standardwert für meine Child-Scope-Variablen festlegen kann.Angularjs Controller destructor

Habe ich einen Controller "Destruktor"? Woher weiß ich, wann ein Controller geschlossen wird und der Scope gereinigt wird (zerstört durch die Funktion $ destroy)?

Danke!

Antwort

45

Sie müssen die $destroyEreignis, zum Beispiel hören:

function MyController($scope, ...) { 
    ... 
    $scope.$on("$destroy", function handler() { 
     // destruction code here 
    }); 
} 

Relevante Dokumente: https://docs.angularjs.org/api/ng/type/$rootScope.Scope

+0

Es wird von der '$ scope' emittiert wird, also ja, wo Sie Zugriff auf die haben' $ scope', können Sie es hören. Im Wesentlichen wird der $ Scope zerstört und gibt dieses Ereignis aus. der Controller wird als Folge davon zerstört, also ist es etwas indirekt, aber dennoch stabil. –