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?
Ich glaube, das ist der Optionsparameter des ui-Routers mit dem Wert {location: 'replace'} ist für.
vorgesehenDie 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 .
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:
Tags und Links angularjs angular-ui-router