AngularJS ng-table固定标头

ale*_*cci 21 angularjs ngtable

我正在使用ng-table来显示一些信息.我想固定ng-table的页眉和页脚,并强制ng-table在行中绘制滚动条.

ng-table文档站点没有关于如何实现这一目标的文档.

有任何想法吗?

Yar*_*ron 26

这个仅限CSS的解决方案对我有用.只需将该类添加table-scroll到table元素和以下CSS:

.table-scroll thead {
    display: table;
    width: 100%;
    table-layout: fixed;
}

.table-scroll tbody {
    max-height: 150px;
    overflow-y: auto;
    display: block;
    width: 100%;
    table-layout: fixed;
}

.table-scroll tr {
    display: table;
    table-layout: fixed;
    width: 100%;
}

.table-scroll td {
    height: 47px; // needed in order to keep rows from collapsing
}
Run Code Online (Sandbox Code Playgroud)

  • 滚动条的宽度添加到`tbody`宽度,因此`thead`和`tr`的行不在彼此之下 (2认同)

小智 15

这是迄今为止我发现的最可靠的解决方案.在决定使用jQuery插件之前,我已经看了几个小时.在我使用的插件版本中,我们可以将标头粘贴到可滚动的容器中.使用ng-table查看此plunker的用例:

http://plnkr.co/edit/ypBaDHIfaJWapXVs3jcU?p=preview

使用Javascript

app.directive('fixedTableHeaders', ['$timeout', function($timeout) {
  return {
    restrict: 'A',
    link: function(scope, element, attrs) {
      $timeout(function() {
          var container = element.parentsUntil(attrs.fixedTableHeaders);
          element.stickyTableHeaders({ scrollableArea: container, "fixedOffset": 2 });
      }, 0);
    }
  }
}]);   
Run Code Online (Sandbox Code Playgroud)

HTML

<div id="scrollable-area">
      <table ng-table="tableParams" fixed-table-headers="scrollable-area">
        <tr ng-repeat="user in $data">
            <td data-title="'Name'">{{user.name}}</td>
            <td data-title="'Age'">{{user.age}}</td>
        </tr>
      </table>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

#scrollable-area {
    height: 150px;
    overflow-y: scroll; /* <-- here is what is important*/
}
table {
  width: 100%;
}
thead {
    background: #fff;
}
Run Code Online (Sandbox Code Playgroud)


emp*_*emp 5

我不知道页脚,但我对标题有类似的要求.

这是在@ Github之前要求的:https://github.com/esvit/ng-table/issues/41

我使用jquery插件(https://github.com/jmosbech/StickyTableHeaders)制作了自己的实现.

这里有一个plunkr:http://plnkr.co/edit/KyilXo?p = preview

基本上我们只是在data-fixed-table-headers 渲染数据时调用指令中的插件.

angular.module('main').directive('fixedTableHeaders', ['$timeout', fixedTableHeaders]);

    function fixedTableHeaders($timeout) {
        return {
            restrict: 'A',
            link: link
        };

        function link(scope, element, attrs) {

            $timeout(function () {
              element.stickyTableHeaders();
                    }, 0);
        }
    }
Run Code Online (Sandbox Code Playgroud)