5

「結果ページ」に戻ってきたユーザーの場合、最後に使用したフィルターを表示したいと考えています。そのngCookiesため、ページで最後に使用された検索パラメーターを更新するために使用しています。

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

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

ただし、「戻る」をクリックしても、期待する最後のページに移動しません。

これは、別の状態が履歴にプッシュされたが、ユーザーには認識されなかったためです。

ユーザーは着陸しまし/resultsたが、コントローラーはすぐに/results?param1=dude&param2=bro状態履歴にプッシュしました。

状態を上書きまたは削除して/results、「back」でユーザーが最後にアクセスしたページに戻ると予想される状態に戻すにはどうすればよいですか?

4

1 に答える 1

10

$location.search 呼び出しの最後にチェーンreplace()します。

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

これにより、新しい履歴エントリが追加されるのではなく、最後の履歴エントリが置き換えられます。

検索パラメーターが変更されたときにルートをリロードしないように設定できるreloadOnSearchオプションもありますfalse(戻るボタンを に移動する場合/results)。

于 2013-07-25T14:03:02.897 に答える