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,以便“返回”将我返回到用户期望他们来自的最后一页的状态?

4

1 回答 1

10

链接replace()到 $location.search 调用的末尾:

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

这会导致最后一个历史条目被替换,而不是添加一个新条目。

还有一个reloadOnSearch选项,您可以设置它false以防止在搜索参数更改时重新加载路线(如果您希望后退按钮转到/results)。

于 2013-07-25T14:03:02.897 回答