plugin - Cabeceras fijas AngularJS ng-table
ngtable download (3)
Estoy usando ng-table para mostrar algo de información. Me gustaría corregir el encabezado y el pie de página de la tabla ng y forzar a la tabla ng a dibujar barras de desplazamiento dentro de las filas.
El sitio de documentación de ng-table no tiene documentación sobre cómo hacer que eso suceda.
¿Algunas ideas?
Esa es, con mucho, la solución más confiable que encontré. Y he buscado durante horas antes de decidir utilizar un complemento de jQuery. En la versión del complemento que estoy usando, podemos pegar el encabezado en un contenedor desplazable. Eche un vistazo a este plunker para ver un caso de uso con ng-table:
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;
}
No sé sobre el pie de página, pero tenía un requisito similar para los encabezados.
Esto se solicitó antes de @ Github: https://github.com/esvit/ng-table/issues/41
Hice mi propia implementación utilizando un complemento jquery ( https://github.com/jmosbech/StickyTableHeaders ).
Hay un plunkr aquí: http://plnkr.co/edit/KyilXo?p=preview
Básicamente, solo llamamos al complemento en la directiva data-fixed-table-headers
cuando los datos han sido renderizados.
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);
}
}
Esta solución solo para CSS funcionó para mí. Solo agregue la clase table-scroll
de tabla al elemento de tabla y el siguiente 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
}