0

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 
       } 
      } 
     } 
+0

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 –

+0

Sie sollten in Betracht ziehen, mit einer Art von Routing, wie ui.router – jbrown

+0

Werfen Sie einen Blick: http://StackOverflow.com/A/201406/5119391 – Deepika

Antwort

0

ich am Ende mit: $location.url(url).replace(); die je nach Bedarf gearbeitet.