angularjs - 如何阻止 Angular 滚动到顶部

标签 angularjs

我的页面上有一个 Angular 驱动的表格,可以排序。当我单击某列来更改排序时,它会发出 $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;
    };
}

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

我已经尝试过:

  1. 从排序函数返回 false
  2. 将其添加到我的模块中以禁用 Angular 的滚动:var ngGrid = angular.module("ngGrid", []).value('$anchorScroll', angular.noop);
  3. 设置 min-height在表格上的 css 中以防万一导致它
  4. 使用ng-href而不是 anchor 链接中的 href。

最佳答案

找到了。

在我的排序函数中,我不需要返回 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();
        };
    }

关于angularjs - 如何阻止 Angular 滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19562960/

相关文章:

javascript - Handsontable RuleJS 缺少递归解析

javascript - Angularjs 数组中的嵌套对象数组

javascript - 如何正确从表中删除对象?

javascript - 在 grails 项目中使用 jquery 2.2.2

javascript - angularjs中 Controller +工厂的动态加载

javascript - 即使在使用 Javascript 重新加载页面后,也可以通过单击来保留所选颜色

javascript - 用户界面路由器 : Parent's resolve not called when state changes

javascript - Angular JS(尤其是 Angular Material Design)在 Sublime Text 3 上的缩进效果不佳

javascript - 为什么这个 Angular2 JavaScript 示例应用程序无法启动?

javascript - 如何从 angular.js 中的服务进行 $rootScope.$broadcast