一尘不染

使用ui-router和Angularjs自动滚动到TOP

angularjs

我已经阅读了很多不同的问题,给出的解决方案似乎都不适合我的用例。我首先简单地将target =“ _ top”放在所有链接上,但这实际上迫使我的应用重新加载,将无法正常工作。我也看到人们说他们使用 autoscroll =“ true”,
但这似乎只有在我的 ui-view中有效

问题在于,在我的index.html文件中,我已修复了导航和其他静态元素,这些元素位于我的第一个ui视图上方。这意味着当我转到其他页面时,由于该页面加载通过那些元素,因此导航丢失。我还尝试通过以下方法将其放在身上:

<body autoscroll="true">
</body>

这似乎也不起作用。所以问题是,如何确定新页面(从ui-router更改新路由)导致从页面顶部开始?谢谢!


阅读 188

收藏
2020-07-04

共1个答案

一尘不染

如果您希望它始终滚动到0跨浏览器,请对自动滚动不执行任何操作。只需将其放置在您的运行块中:

$rootScope.$on('$stateChangeSuccess', function() {
   document.body.scrollTop = document.documentElement.scrollTop = 0;
});
2020-07-04