Ich habe ein Problem mit AngularJS und URLS. Wenn ich die Zurück/Vorwärts-Tasten im Browser drücke, möchte ich, dass meine Modelle entsprechend aktualisiert werden. Wie Sie von dieser Seite sehen können:AngularJS Zurück/Vorwärts-Taste Update-Modell/Bereich
Es zieht die Variablen aus der URL (eine Getter-Funktion, die ich als mein Standardwert für X-Modell festgelegt, falls verfügbar) und legt sie für jedes Suchfilter auf das Modell. Wenn Sie mit der Aktualisierung der Filter beginnen, wird auch die URL aktualisiert (dies ruft eine Funktion für ng-change auf) und das Aktualisieren oder Teilen der URL lädt die Seite mit allen vordefinierten Modellen aus der URL.
Das Problem, das ich habe ist, dass die Ansicht/Controller nicht aktualisiert/aktualisiert, wenn Sie die Zurück/Vorwärts-Tasten drücken.
Ein Beispiel, wie ich mein Modell auf Seite Last in meinem Controller definieren:
vm.type = getFromURL('what=') || 'Events';
function getFromURL(filterName){
var url = $location.url();
// if there is already a hash in the url
if(url && url.indexOf('params?') >= 0){
// If the search param already exists
if(url.indexOf(filterName) >= 0){
// Split url at already existing search param
var searchParams = url.split(filterName)[1];
// if there is still an '&' in the url do something
if(searchParams.indexOf('&') >= 0){
// split at the '&' and get rid of anything after it(other search params)
var singledParam = searchParams.split('&')[0];
return singledParam;
}else{
return searchParams;
}
// If the suggested search param doesn't exist
}
}
}
ist die Sache, wenn Sie Ihre '$ location.url()' ändern, navigieren Sie nicht dazu! Sie führen nur einen beliebigen Winkelcode aus. Das bedeutet, dass Sie nichts in der Broswear-Geschichte stecken! Was Sie wirklich tun müssen, ist eine Seite neu laden zu zwingen! So wird es in der Geschichte gespeichert –
Sie sollten in Betracht ziehen, mit einer Art von Routing, wie ui.router – jbrown
Werfen Sie einen Blick: http://StackOverflow.com/A/201406/5119391 – Deepika