对于AngularJS web应用程序:网页不';当使用“后退”按钮导航回它们时,我记不起它们上次的滚动位置。为什么?如何修复?

对于AngularJS web应用程序:网页不';当使用“后退”按钮导航回它们时,我记不起它们上次的滚动位置。为什么?如何修复?,angularjs,browser-history,html5-history,Angularjs,Browser History,Html5 History,在浏览AngularJS的开发者指南时,我注意到当使用“后退”按钮导航回页面时,我不会返回到上一个滚动位置。相反,我直接回到顶端。由于《开发者指南》是用AngularJS构建的,我担心,当我用AngularJS构建自己的web应用程序时,如果我的用户有同样的体验,这会让他们感到烦恼。为什么会发生这种情况,如何解决?我是否需要以某种方式使用HTML5的历史API 转到《开发人员指南》并亲自查看此行为:如果您想解决此问题,我可以考虑在地图(在服务中或在rootScope上)中跟踪每个路由滚动位置-当

在浏览AngularJS的开发者指南时,我注意到当使用“后退”按钮导航回页面时,我不会返回到上一个滚动位置。相反,我直接回到顶端。由于《开发者指南》是用AngularJS构建的,我担心,当我用AngularJS构建自己的web应用程序时,如果我的用户有同样的体验,这会让他们感到烦恼。为什么会发生这种情况,如何解决?我是否需要以某种方式使用HTML5的历史API


转到《开发人员指南》并亲自查看此行为:

如果您想解决此问题,我可以考虑在地图(在服务中或在rootScope上)中跟踪每个路由滚动位置-当您离开页面(
$routeChangeStart
侦听器)时,只需将滚动位置与路由路径一起保存


当进入任何页面时,您可以检查地图中是否存在路由路径的记录,并在
$routeChangeSuccess
事件上将窗口滚动到所需位置您应该查看Angular$Anchorcroll服务

.$anchorScroll

这正是你的剧本!
示例代码本身就足以说明问题。

一般来说,大多数浏览器都不会等待XHR进行“滚动”,因此当您点击“后退”按钮时,页面会在“加载”内容之前进行“滚动”。不过我还没有研究任何解决方案。这只适用于标记为的职位。问题是关于任何位置,而不仅仅是标记位置。