2013-07-25 16 views
5

Wenn ich ein wiederkehrender Benutzer zu einer "Ergebnisseite" bin, möchte ich die letzten Filter sehen, die ich verwendet habe. So verwende ich ngCookies, um die zuletzt verwendeten Suchparameter auf einer Seite zu aktualisieren.

controller('Results', ['$location','$cookies',function($location,$cookies){ 
    $location.search(angular.fromJson($cookies.search)); 
}]); 

//will yield: /results?param1=dude&param2=bro 

Allerdings, wenn ich auf „zurück“ Ich werde nicht zur letzten Seite gebracht werde ich erwarten würde.

Das liegt daran, dass ein anderer Zustand auf den Verlauf geschoben wurde, aber vom Benutzer nicht wahrgenommen wurde.

Der Benutzer landete auf /results, aber der Controller drückte sofort /results?param1=dude&param2=bro auf die Statushistorie.

Wie kann ich überschreiben oder den Zustand löschen /results so dass „zurück“ mir zurückkehren würde, was ein Benutzer die letzte Seite erwarten sie kamen zu sein?

+0

Können Sie $ location.replace() verwenden; ? Ich schaue auf http://docs.angularjs.org/guide/dev_guide.services.$location – Will

Antwort

10

Kette replace() auf das Ende Ihres location.search Anruf $:

controller('Results', ['$location','$cookies',function($location,$cookies){ 
    $location.search(angular.fromJson($cookies.search)).replace(); 
}]); 

Dies bewirkt, dass der letzten Historieneintrag eher ersetzt werden, als ein neuer hinzugefügt.

Es gibt auch die Option, die reloadOnSearch Sie false einstellen Nachladen eine Route zu verhindern, wenn die Suche params ändern (wenn Sie die Zurück-Taste, um /results gehen wollen).

+0

+1 Danke, das war genau das, was ich gesucht habe. –

Verwandte Themen