4

我的页面上有一个角动力表,带有排序功能。当我单击一列更改排序时,它会为新数据发出 $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. 从 sort 函数返回 false
  2. 将此添加到我的模块以禁用 Angular 的滚动:var ngGrid = angular.module("ngGrid", []).value('$anchorScroll', angular.noop);
  3. 在桌子上设置一个min-heightcss 以防万一
  4. 在锚链接中使用ng-href而不是 href。
4

1 回答 1

3

找到了。

在我的排序函数中,我需要返回 false,而不是返回event.preventDefault();

全功能:

    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();
        };
    }
于 2013-10-24T13:22:40.523 回答