verhindert erneute Initialisierung des Controllers auf $ location.path ()

8

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?

    
Dania 19.09.2013, 16:42
quelle

2 Antworten

0

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%     
Dania 06.08.2016, 18:40
quelle
5

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.

    
Buu Nguyen 19.09.2013 17:52
quelle

Tags und Links