覆盖$location-pushState历史AngularJS



如果我是"结果页面"的返回用户,我想查看我使用的最后一个过滤器。所以我使用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"将我返回到用户期望的最后一个页面?

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

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

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

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

最新更新