2013-07-25 69 views
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以便「」返回「會使我回到用戶期望他們來自的最後一頁是什麼?

+0

你可以使用$ location.replace(); ?我正在查看http://docs.angularjs.org/guide/dev_guide.services.$location – Will

回答

10

replace()到您的$ location.search通話結束:

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

這將導致最後歷史條目將被替換,而不是一個新的補充。

還有reloadOnSearch選項,您可以將其設置爲false以防止在搜索參數更改(如果您希望返回按鈕轉到/results)時重新加載路線。

+0

+1謝謝,這正是我所期待的。 –