AngularJS。如何禁用自动滚动到我的页面顶部

时间:2013-01-25 21:20:16

标签: javascript angularjs

请告诉我,如何禁用自动向上到我的页面顶部? 如果我使用哈希导航:

<a href="#/index">Goto index</a>

我的页面最重要,但如果我使用AngularJS: HTML:

<a ng-href="#/index">Goto index</a>

JS:

$routeProvider.
      when('/index', {
          template:'...',
          controller: 'RouteCtrl'
      })

我的页面滚动到顶部。我该如何禁用它?

3 个答案:

答案 0 :(得分:23)

我发现你的普通href不滚动而ng-href滚动有点奇怪,我认为这是另一回事...

但是,对于解决方案;由浏览器滚动哈希更改,因此通常要禁用它,您需要拦截并preventDefault()事件,然后自己更改位置。使用Angular时,您可以为<a>元素定义一些属性指令,也可以只定义自己的a指令。

如果您使用ng-view,它会依赖$anchorScroll服务和视图更新来模拟浏览器通常会执行的操作,因为Angular已经拦截了该事件。您可以通过提供自己的$anchorScroll来阻止滚动查看加载:

angular.module('yourModule', []).value('$anchorScroll', angular.noop);

答案 1 :(得分:2)

正如AngularJS documentation所示,正确的做法是:

angular.module('yourModule',[]).config( ['$anchorScrollProvider', 
    function($anchorScrollProvider) {
        $anchorScrollProvider.disableAutoScrolling();
    }]
);

答案 2 :(得分:1)

试试

assessmentApp.run(['$anchorScroll', function($anchorScroll) {
    $anchorScroll = angular.noop;
}])