Holen Sie sich stateParams auf ändern ohne reload
Mache ich eine app mit angular ui router.
Beim navigieren zu einem bestimmten Zustand, die hat immer ein Parameter übergeben werden, ich muss in der Lage sein zu ändern die url und die Parameter aktualisiert ohne Neuladen der Ansicht.
In meinem Staat config die ich verwende:
reloadOnSearch: false
Dies funktioniert und mir erlaubt, aktualisieren Sie die Parameter in der URL ohne Seite neu zu laden.
Allerdings muss ich benachrichtigt werden über diese änderungen auf der $stateParams, so kann ich die verschiedenen Methoden, die die Dinge mit den neuen Daten.
Irgendwelche Vorschläge?
Dank, James
- Sie tun können, $scope.$sehen Sie auf $stateParams
- Das funktioniert nicht..
- Können Sie das Feuer aus eine ändern-Funktion auf der
$routeUpdate
Veranstaltung? Sollte es ausgestrahlt werden, das auf einer URL-update-wenreloadOnSearch
istfalse
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist relevant für mich, also habe ich ein bisschen arbeiten.
Hier ist mein Staat, der verwendet
reloadOnSearch
sondern feuert aus einer Funktion jedes mal die URL aktualisiert.Gibt in der Konsole:
$locationChangeStart
und$locationChangeSuccess
sollten, erhalten Sie, wo Sie gehen wollen. Beachten Sie, dass Ihre Lage Funktionen wird immer das Feuer aus, auch auf der ersten laden.Inspiration genommen von diese SO ein post und die
$location
DokumentationEDIT 2
Nach der Angular-Dokumentation für
ngRoute
,$routeParams
nicht aktualisiert, bis nach dem Erfolg der änderungen. Die Chancen sind, dass ui-route hat eine ähnliche Beschränkung. Da wir inturrupting die Auflösung des Staates,$stateParams
nie aktualisiert. Was Sie tun können, ist nur emulieren, wie$stateParams
übergeben werden, in Erster Linie mit$urlMatcherFactory
.Etwa so:
Rahmen eigentlich updates, also ist das eine gute Sache. Die Sache zu erinnern ist, dass Sie stoppng die normale Auflösung von alles, aber die Einstellung
reloadOnSearch
zufalse
so müssen Sie behandeln so ziemlich alles, was auf Ihrem eigenen.$locationChangeStart
undreloadOnSearch
du bist ziemlich beenden eines scope-updates.$scope.$apply()
wird wahrscheinlich dein Freund sein mit diesem als gut. Auch müssen Sie$locationChangeSuccess
wenn Sie wollen, dass die endgültige URL.Folgenden Römer-code, baute ich einen service, gibt der Staat params, der den aktuellen Stand