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-heightそれが原因であった場合に備えて、テーブルの css にa を設定します
  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 に答える