tr-ng-grid不尊重order-by

时间:2014-10-03 21:04:33

标签: javascript angularjs ng-grid

我将这个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()时,它的顺序正确。桌子上的消息并非如此。你可以在下面看到它的样子

enter image description here

我在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 等...

1 个答案:

答案 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">