如何阻止角度滚动到顶部

时间:2013-10-24 10:08:06

标签: angularjs

我的页面上有一个角度驱动的表格,有排序功能。当我单击一列来更改排序时,它会为新数据发出$ http请求并重新应用它。一切运作良好,但它令人烦恼地将页面滚动到顶部。

我的排序链接由指令呈现:<a ng-click='sort()' href='#' ng-transclude></a>

我的排序处理程序也在指令中定义:

link: function (scope, el, attrs) {
    scope.sort = function () {
        // Want to check the pagerInfo of the controller
        scope.$parent.onsort(scope.sortby, sortDir);
        return false;
    };
}

这只是调用控制器上的函数来重新获取数据。

我试过了:

  1. 从排序功能
  2. 返回false
  3. 将此项添加到我的模块以禁用角度滚动:var ngGrid = angular.module("ngGrid", []).value('$anchorScroll', angular.noop);
  4. 在桌子上的css中设置min-height以防引起它
  5. 在锚链接中使用ng-href代替href。

1 个答案:

答案 0 :(得分:3)

找到它。

在我的sort函数中,我需要event.preventDefault();

而不是返回false

全功能:

    link: function (scope, el, attrs) {
        scope.sort = function () {
            // Want to check the pagerInfo of the controller
            var sortDir = "desc";
            if (scope.$parent.pagerInfo.sortby == scope.sortby) {
                sortDir = scope.$parent.pagerInfo.sortdir == "asc" ? "desc" : "asc";
            }
            scope.$parent.onsort(scope.sortby, sortDir);
            event.preventDefault();
        };
    }