2014-05-17 15 views
16

Tôi đang sử dụng ng-table để hiển thị một số thông tin. Tôi muốn làm cho đầu trang và chân trang của bảng ng cố định và buộc bảng ng để vẽ các thanh cuộn trong các hàng.AngularJS ng-table tiêu đề cố định

Trang web tài liệu ng-table không có tài liệu hướng dẫn về cách thực hiện điều đó.

Bất kỳ ý tưởng nào?

Trả lời

5

Tôi không biết về chân trang nhưng tôi có yêu cầu tương tự cho tiêu đề.

này được yêu cầu trước khi @ Github: https://github.com/esvit/ng-table/issues/41

tôi đã thực hiện của riêng tôi sử dụng một plugin jquery (https://github.com/jmosbech/StickyTableHeaders).

Có một plunkr đây: http://plnkr.co/edit/KyilXo?p=preview

Về cơ bản, chúng tôi chỉ cần gọi các plugin trong chỉ thị data-fixed-table-headers khi dữ liệu đã được trả lại.

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); 
     } 
    } 
+1

Điều này dường như gắn đầu đề bảng vào đầu màn hình, nhưng không phải trường hợp bảng nằm trong phần tử có thể cuộn: http : //plnkr.co/edit/5wvfzNzWQfH4NNpgYdB9? p = preview – cfs

+0

Có nhưng điều đó dường như là một hạn chế của plugin jquery của stickyTableHeaders. Xem vấn đề và tiềm năng sửa chữa ở đây: https://github.com/jmosbech/StickyTableHeaders/issues/1 – emp

+0

Nó không hoạt động với accordian trên ng-bảng .. Xin vui lòng xem plunker cho vấn đề .. http://plnkr.co/edit/FGjU46cCMuhIdyacffHl? p = preview –

14

Đó là giải pháp đáng tin cậy nhất mà tôi đã tìm thấy. Và tôi đã tìm kiếm hàng giờ trước khi quyết định sử dụng một plugin jQuery. Trong phiên bản của plugin mà tôi đang sử dụng, chúng tôi có thể dán tiêu đề vào vùng chứa có thể cuộn. Hãy xem plunker này cho một trường hợp sử dụng với ng-bảng:

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); 
    } 
    } 
}]); 

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> 

CSS

#scrollable-area { 
    height: 150px; 
    overflow-y: scroll; /* <-- here is what is important*/ 
} 
table { 
    width: 100%; 
} 
thead { 
    background: #fff; 
} 
+0

Plnkr không còn hoạt động do liên kết cũ đến ng-table.js. Hãy thử thay thế bằng 'https: // cdnjs.cloudflare.com/ajax/libs/ng-table/0.3.3/ng-table.min.js' –

+0

Nó không hoạt động với accordian phía trên bảng ng .. Vui lòng xem plunker cho vấn đề .. http://plnkr.co/edit/FGjU46cCMuhIdyacffHl?p=preview –

+0

Tôi nhận thấy rằng trong bản demo nó có một lỗi khi bạn giảm chiều rộng của khung nhìn để cuộn ngang được kích hoạt trên bảng, khi bạn cuộn xuống, các tiêu đề cố định xuất hiện ở bên phải của cạnh của bảng.Đây sẽ là vấn đề đối với các bảng có chiều ngang. –

13

giải pháp chỉ CSS này làm việc cho tôi. Chỉ cần thêm lớp table-scroll vào phần tử bảng và CSS sau:

.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 
} 
+0

Rất tiếc! ... Cảm ơn bạn rất nhiều vì đã tải lên ... điều này thật tuyệt vời! – Sabyasachi

+2

chiều rộng của thanh cuộn được thêm vào chiều rộng 'tbody' để các dòng' thead' và 'tr' không nằm dưới nhau –

+1

Sau khi tìm kiếm khoảng 20 giải pháp, tìm thấy điều này làm việc cho trường hợp của tôi. cảm ơn rất nhiều @Yaron –

Các vấn đề liên quan