我试图使用ngTable在html上显示数据.
在html中,我将所有列都“排序”.
<table ng-table="fm.tableParams" class="table" show-filter="false">
<tr ng-repeat="report in $data">
<td title="'ReportId'" sortable="'reportId'" class="text-center">
{{report.reportId}}</td>
<td title="'SampleId'" sortable="'sampleId'" class="text-center">
{{report.sampleId}}</td>
<td title="'MRN'" sortable="'mrn'" class="text-center">
{{report.mrn}}</td>
<td title="'Diagnosis'" sortable="'diagnosis'" class="text-center">
{{report.diagnosis}}</td>
</tr>
</table>
从服务器检索数据.
controller.js
ristoreApp.controller("fmCtrl",
['$scope', 'fmFactory', 'NgTableParams', function($scope, fmFactory, NgTableParams) {
var self = this;
$scope.selection = '0';
$scope.fmSearch = function () {
if ($scope.selection == '0') {
self.tableParams = new NgTableParams({
page: 1, // show first page
count: 10, // count per page
}, {
getData: function (params) {
return fmFactory.getAll().then(function(response) {
var reports = response.data;
params.total(reports.length);
console.log(reports.length);
return reports;
});
}
});
self.tableParams.reload();
}
}
}]
)
它确实在页面中显示记录.但是,排序不适用于任何列.我需要做些什么来使它工作?
编辑:
根据ngtable.com,“您需要将NgTableParams.sorting()中的值应用于要在表中显示的数据.这通常是从服务器获取数据的情况.”但是它没有说明如何将此方法应用于数据.似乎ngtable 1.0.0文档记录不足,缺乏示例.任何人都可以告诉我如何在客户端排序?
最佳答案 自动排序仅在与完整数据集属性一起使用时才有效(如简单示例
here中所示).
当您实现getData()方法时,轮到您(或者在大多数情况下是服务器的任务)进行排序.在params属性中,您可以找到通常需要传递给服务器的排序,以便服务器可以进行排序.特别是当使用分页视图(因此不是一次返回所有项目)时,服务器需要在选择页面的相关项目之前进行排序.
因此,如果您没有很多项目并且不需要分页,则可以在返回之前对其进行排序.如果您不想事先加载所有项目,则需要将排序信息传递给服务器,让服务器进行排序和分页.