javascript - 覆盖 $location pushState 历史 AngularJS

标签 javascript angularjs

如果我是“结果页面”的返回用户,我想查看我使用的最后一个过滤器。所以我使用 ngCookies 来更新页面上最后使用的搜索参数。

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

//will yield: /results?param1=dude&param2=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/

相关文章:

javascript - 如何通过类名使用函数 switchVisible?

javascript - 返回顶部按钮不隐藏

javascript - 无法在 axios 回调 React Native 中访问正确的 this 上下文

AngularJS 在 Loopback API 中获取 413(请求实体太大)的状态代码 0

ios - Ionic iOS 白色状态栏

javascript - 如果不在同一个元素上释放,则丢失 MouseUp 事件

Javascript 部分搜索

javascript - d3.js v4 和 AngularJS 中不受信任的 HTML

javascript - AngularJs ng-repeat 表达式在 IE9 中不起作用

javascript - angular js中$scope的可变范围如何工作?