角度排序不能正确显示结果

时间:2016-07-20 14:39:22

标签: angularjs sorting

我正在尝试根据表格TH来订购我的商品。

示例TH:

<th>ID&nbsp;<a ng-click="sort_by('productID');">
<i class="glyphicon glyphicon-sort"></i></a></th>

示例行:

<tr ng-repeat="data in filtered = (list | filter:search | filter:{manufacturer:by_manufac} | filter:byRange(priceInfo.min, priceInfo.max) | orderBy : predicate :reverse) | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit " ng-class="{'danger': data.errorStatus=='error'}">

示例列:

<td ng-class='{red : data.Locked==1}'><center>{{data.productID}}</center></td> 

问题是结果排序很奇怪。我有586行,ID范围从4到1059(每页50个产品)。

startFrom过滤器:

app.filter('startFrom', function() {
    return function(input, start) {
        if(input) {
            start = +start; //parse to int
            return input.slice(start);
        }
        return [];
    }
});

sort_by:

$scope.sort_by = function(predicate) {
        $scope.predicate = predicate;
        $scope.reverse = !$scope.reverse;
    };

当我点击排序图标时,首先列出数字998。当我再次点击它时,首先列出1000。数字4,永远不会显示。任何想法为什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

请尝试使用angular-toArrayFilter,可能会解决您的问题。 http://ngmodules.org/modules/angular-toArrayFilter

答案 1 :(得分:0)

是。看起来这些值(即使作为INT存储在DB中,也必须转换为int,以便对数字进行排序。现在它正常工作。

就我而言,我使用PHP通过$http.get('ajax/getItems.php').success(function(data){...}

从数据库中获取项目

在我的PHP文件中: 我添加了行:

{
  $row["productID"] = intval($row["productID"]);
}

现在,此行的值被强制为INT。