2017-01-24 5 views
3

diesen Code gefunden einer der Richtlinien in einem Projekt arbeite ich an:

element.on('$destroy', function() { 
    scope.$destroy(); 
}); 

Ist dieser Code benötigt? Oder kann ich es entfernen? Wird der Anwendungsbereich nicht zerstört, wenn die Richtlinie vernichtet wird?

+0

Ich benutzte so etwas, wenn ich an einer Unterkomponente für eine Website arbeitete, einige der Elemente wurden durch die Elternanwendung außerhalb unserer eckigen App entfernt und das war nur eine Möglichkeit, einige Bindungen und Listener zu zerstören – maurycy

+0

Der einzige Punkt, den ich sehe - wenn dies der Umfang eines anderen Elements ist. Das ist immer noch sch **, kann aber etwas tun. –

+0

Der Code rief Compile/Append einer anderen Direktive auf, aber ich habe es entfernt. – jcubic

Antwort

1

, dass es halten, wenn Sie es Zweck identifizieren, $destroy() tatsächlich entfernt, den Umfang von seinem übergeordneten Rahmen, unten ist der Auszug der offiziellen Dokumentation

zerstört $(); Entfernt den aktuellen Bereich (und alle untergeordneten Bereiche) aus dem übergeordneten Bereich. Entfernen bedeutet, dass Aufrufe von $ digest() nicht mehr an den aktuellen Bereich und seine untergeordneten Elemente weitergegeben werden. Das Entfernen bedeutet auch, dass der aktuelle Bereich für die Speicherbereinigung geeignet ist.

Auch bitte überprüfen Sie diese SO Thread zum Beispiel und detaillierte Erklärung.

1

Sie müssen diesen Code nicht schreiben.

Gemäß der Dokumentation wird das Ereignis $destroy in zwei Fällen ausgelöst.

  • kurz vor einem Umfang
  • zerstört
  • Kurz bevor ein Element aus dem DOM
  • entfernt

Als Randbemerkung, können Sie immer noch die scope des Elements verwenden in das element.on('$destroy') Ereignis vor der Bereich wird zerstört:

element.on('$destroy', function() { 
    console.log('RIP', scope); 
});