如何在AngularJS中滚动到页面顶部?


Answers:


155

您可以使用

$window.scrollTo(x, y);

其中x,横轴是像素,纵轴y是像素。

  1. 滚动到顶部

    $window.scrollTo(0, 0);
    
  2. 专注于元素

    $window.scrollTo(0, angular.element('put here your element').offsetTop);   
    

Example

更新

你也可以用 $anchorScroll

Example


6
对于专注于元素,$window.scrollTo(0, angular.element('put here your element').offset().top);
Muhammad Reda

1
不要忘记在控制器函数定义中注入$ window。例如:函数($ scope,$ rootScope,$ location,base_factory,$ window)
Deepak Rai

@MuhammadReda,当您说将您的元素放在这里时,是该元素的ID?例如,我想滚动到ID为“ directions_panel”的元素的顶部,因此我输入了您说“在此处放置元素”的位置,但是却遇到了错误。谢谢您的帮助
萨拉(Sarah)

@MuhammadReda我现在正在工作,谢谢。我没有document.getElementById('my_element')。offsetTop来代替angular.element('在这里放元素').offsetTop。感谢您的帮助:)
萨拉

我不知道为什么,但是这两个代码都不起作用。我在ng-calendar指令中使用它。:(
rahim.nagori


12

理想情况下,我们应根据适用情况从控制器或指令中执行此操作。使用$anchorScroll$location作为依赖项注入。

然后调用这两个方法

$location.hash('scrollToDivID');
$anchorScroll();

scrollToDivID是您要滚动的ID。

假设您要导航到错误消息div为

<div id='scrollToDivID'>Your Error Message</div>

有关更多信息,请参阅此文档


上面的答案适用于angularjs 1
Partha Sarathi Ghosh,


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.