我将这个angularjs模块用于表:http://moonstorm.github.io/trNgGrid/release/index.html
我正在显示我的数据:
<table tr-ng-grid="" items="logs" page-items="100" class="table table-striped">
<thead>
<tr>
<th field-name="id" display-name="id" enable-filtering="false"></th>
<th field-name="user" display-name="User" enable-filtering="false"></th>
<th field-name="action" display-name="Action" enable-filtering="false"></th>
<th field-name="additional" display-name="Additional" enable-filtering="false"></th>
<th field-name="time" display-name="Time" enable-filtering="false"></th>
</tr>
</thead>
</table>
数据来自$http
调用,当我对该数据执行console.log()时,它的顺序正确。桌子上的消息并非如此。你可以在下面看到它的样子
我在order-by
元素中添加了table
属性,但它似乎没有任何效果:
<table tr-ng-grid="" items="logs" order-by="time" page-items="100" class="table table-striped">
如果我点击Time
列进行排序,则会按正确顺序对其进行排序。按id
排序并不起作用,因为它似乎是这样做的:
1, 10, 11, 12, ... 18, 19, 20, 2, 21, 22 等...
答案 0 :(得分:1)
您的$ http请求返回json对象,其中所有字段都是字符串。由于您将它直接送到您的桌子,您的ID仍然是字符串,并按此顺序排列(1,10,...)。如果要将数字作为数字排序,或者利用trNgGrid列选项,则需要预处理数据并用数字替换字符串ID;通过模块文档,我会说实现stringToNumberFormat的计算字段应该可以做到这一点:
angular.module(...)
.filter("stringToNumber", function () {
return function (fieldValueUnused, item) {
return parseInt(item.id);
};
});
<th field-name="numberId" display-name="id" display-format="stringToNumber:gridItem">