9

请告诉我,我怎样才能禁用自动上升到我的页面顶部?如果我使用哈希导航:

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

我的页面不超过顶部,但如果我使用 AngularJS:Html:

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

JS:

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

我的页面滚动到顶部。我怎样才能禁用它?

4

3 回答 3

23

我觉得你的平原href不滚动和ng-href滚动有点奇怪,我以为是相反的......

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

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

angular.module('yourModule', []).value('$anchorScroll', angular.noop);
于 2013-01-26T05:20:30.210 回答
2

AngularJS 文档中所示,正确的方法是:

angular.module('yourModule',[]).config( ['$anchorScrollProvider', 
    function($anchorScrollProvider) {
        $anchorScrollProvider.disableAutoScrolling();
    }]
);
于 2013-05-08T16:31:21.547 回答
1

试试看嘛

assessmentApp.run(['$anchorScroll', function($anchorScroll) {
    $anchorScroll = angular.noop;
}])
于 2015-04-18T12:58:01.763 回答