Ich arbeite an einer Anwendung, wo ich einen Rücknavigationslink zur Hauptseite von der Detailseite einfügen muss. Controller für beide Ansichten sind unterschiedlich. Ich verwende $location.path('/')
, um zur Hauptseite zurückzukehren. Problem ist, mein Controller für die Hauptseite wird neu initialisiert, wenn ich zurück navigiere, indem ich auf diesen Link klicke, was nicht das erwartete Verhalten ist. Gibt es eine Möglichkeit, die Neuinitialisierung des Controllers zu verhindern, wenn auf dieselbe Verbindung zurückgeleitet wird?
Da ich in meinem eckigen Projekt mehr als eine Anwendung hatte, war es schwierig, die oben angegebene Antwort zu implementieren, da ich meine ng-Ansicht weit oben in der Hierarchie habe, die entscheidet, welche App dem Benutzer angezeigt wird. Die Lösung besteht also darin, Daten in einem Service zu speichern. Der Dienst wird nicht instanziiert, wenn in einer App navigiert wird, sodass die Daten intakt bleiben.
Innerhalb des Controllers,
%Vor%Ich nehme an, dass Sie das eingebaute Routing-Modul AngularJS verwenden. Wenn der betreffende Controller einer Route zugeordnet ist, wird er immer dann initialisiert, wenn die Route mit einem neuen Standort übereinstimmt. Du kannst es nicht vermeiden. Wenn Sie nicht möchten, dass ein Controller mehrmals erstellt wird, sollten Sie ihn in der Ansichtshierarchie höher definieren. Zum Beispiel könnte die Struktur der Hauptseite so aussehen.
%Vor% Hier wird SharedController
nur einmal instanziiert, unabhängig davon, zu welchem Ort Benutzer navigieren. Sie können ng-view
außerhalb der div
von SharedController
belegt verschieben, obwohl dadurch die Vererbung von Bereichen verhindert wird, d. H. Bereiche innerhalb von ng-view
werden nicht prototypisch vom Bereich übernommen, der in SharedController
eingefügt wurde.
Eine weitere Option ist die Verwendung der Drittanbieter-Bibliothek ui-router
, die das Konzept verschachtelter Zustände einführt. Damit könnten Sie einen übergeordneten Status mit einem Controller erstellen, der nur einmal instanziiert wird, wenn Benutzer auf verschiedene untergeordnete Status zugreifen.
Tags und Links angularjs angularjs-routing