2015-04-14 3 views
6

Ich habe die folgende Konfiguration für ui Router-Status in meiner Angularjs App.Reload Seite auf Browser zurück/Vorwärts-Taste in AngularJS mit ui Router

$locationProvider.html5Mode(true); 
    $stateProvider 
     .state('index', { 
      url: '/index?zoom&center', 
      views: { 
       'map': { 
        controller: 'MapCtrl', 
        templateUrl: 'map.html' 
       } 
      }, 
      reloadOnSearch:false 
    }); 

jedoch die Rückseite Vorwärts-Taste im Browser zu anderer URL gehen, aber ich brauche die Seite mit dem URLs als stateParams neu zu laden.

Zum Beispiel: User1 gehen Sie auf Seite http://www.example.com/index?zoom=2&center=1,2. dann er Haufen Betrieb auf der Seite der Fall ist, wird die URL http://www.example.com/index?zoom=12&center=3,4

Dann hat er die Zurück-Taste drückt, wird die URL Änderungen an der vorherigen, aber ich brauche, um meine Seite neu zu laden der Controller lassen die Abfrageparameter lesen zu tun das Richtige ...

Irgendeine Möglichkeit, es mit Browser zurück/vorwärts arbeiten zu lassen?

+0

"aber die Seite wird nicht aktualisiert" - wenn Sie meinen, dass die Seite nicht vollständig aktualisiert wird, fehlt der Winkelpunkt, über den die Rück-/Vorwärtstasten ohne vollständige Seitenaktualisierung funktionieren, was die Geschwindigkeit erhöht, –

+0

aber ich muss meine Seite basierend auf den URLs neu laden. – kdu

Antwort

1

Haben Sie versucht, reloadOnSearch auf wahr zu setzen? Wenn das nicht Ihren Anforderungen entspricht, überprüfen Sie diese Frage möglicherweise: Force AngularJS to reload a route although option reloadOnSearch is set to false

Eine einfachere Alternative kann sein, das Neuladen einfach mit window.location = newUrl zu erzwingen, wann immer es notwendig ist.

+1

sicher möchte ich die ui router states verwenden. Sie möchten jedoch weiterhin die Browserhistorie verwenden, da der Benutzer sie möglicherweise im Browser anklickt. – kdu

+0

Sie können nicht beide haben, soweit ich weiß, da der Zustand gelöscht wird, wenn die Seite neu geladen wird. Sie müssen den Status in der URL oder in einem Cookie speichern, um ihn durch erneutes Laden der Seite zu erhalten. Es gibt Komponenten von Drittanbietern, die dabei helfen. – AlexMA

+0

@ user23878 Ich habe meine Antwort aktualisiert; Ich glaube, ich habe Ihre Frage falsch interpretiert. – AlexMA

Verwandte Themen