Mit angularjs und ui-router können Sie den Navigatorverlauf für eine Ansicht ändern

8

Ich möchte, dass die aktuelle Statusänderung nicht im Navigationsverlauf gespeichert wird. Wenn der Benutzer dann auf "Zurück" klickt, wird die Ansicht übersprungen und zur vorherigen Seite zurückgekehrt.

Kann ich die Statusänderung, die in der Navigatorhistorie gespeichert werden soll, vorübergehend deaktivieren?

    
Mavlarn 15.06.2014, 17:13
quelle

3 Antworten

6

Ich glaube, das ist der Optionsparameter des ui-Routers mit dem Wert {location: 'replace'} ist für.

vorgesehen

Die Dokumentation erklärt:

  

location Boolean oder "replace" (Voreinstellung true), Wenn true die   URL in der Adressleiste, wenn false nicht. Wenn die Zeichenfolge "ersetzen", wird   URL aktualisieren und auch den letzten Verlaufsdatensatz ersetzen.

Es scheint, dass es ein Problem gibt (siehe hier auf GitHub ), das jedoch behoben werden muss .

    
EeKay 18.09.2014 09:39
quelle
2

Im Geiste des stackoverflow werde ich versuchen, die Frage zu beantworten und nicht zu erwähnen, dass das, wonach du fragst, ein wirklich schrecklicher Hack ist; -)

Ich denke, du brauchst vielleicht so etwas. (Der Code ist Kaffeescript)

%Vor%

Wenn sich der Standort ändert (Sie könnten auch $stateChangeStart verwenden), prüfen Sie den aktuellen Status und wenn es der Zustand ist, den Sie nicht möchten, dann gehen Sie in den Zustand, den Sie wollen. Die event.preventDefault() stoppt effektiv die Verarbeitung des ursprünglich angeforderten Zustands.

Wenn Sie eine noch dreckigere Version benötigen, können Sie die Orts-URLs anstelle der Zustände überprüfen und $location.url verwenden, um die Übertragung durchzuführen, wie folgt:

%Vor%     
biofractal 15.06.2014 20:31
quelle
0

Das hat für mich funktioniert.

%Vor%     
sathishkumar 16.10.2015 10:00
quelle

Tags und Links