如果我是“结果页面”的返回用户,我想查看我使用的最后一个过滤器。所以我使用 ngCookies
来更新页面上最后使用的搜索参数。
controller('Results', ['$location','$cookies',function($location,$cookies){
$location.search(angular.fromJson($cookies.search));
}]);
//will yield: /results?param1=dude¶m2=bro
但是,如果我点击“返回”,我将不会被带到我期望的最后一页。
那是因为另一个状态被插入了历史但用户没有察觉到。
用户登陆 /results
但 Controller 立即将 /results?param1=dude¶m2=bro
推送到状态历史。
如何覆盖或删除状态 /results
以便“back”返回到用户期望他们来自的最后一页的状态?
最佳答案
将 replace()
链接到 $location.search 调用的末尾:
controller('Results', ['$location','$cookies',function($location,$cookies){
$location.search(angular.fromJson($cookies.search)).replace();
}]);
这会导致最后一个历史条目被替换,而不是添加一个新条目。
还有 reloadOnSearch您可以将其设置为 false
的选项,以防止在搜索参数更改时重新加载路线(如果您希望后退按钮转到 /results
)。
关于javascript - 覆盖 $location pushState 历史 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860027/