2016-07-20 23 views
0

テーブルのTHに基づいてアイテムを注文しようとしています。角度sortby結果が正しく表示されない

例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> 

問題は、結果の並べ替えは奇妙なことです。私はID範囲が4から1059(ページあたり50個の製品)の586の行を持っています。

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は最初に表示されません。どんなアイデアなの?

ありがとうございました!

+0

何をしますか'sort_by'関数は何をしていますか?それはおそらく考慮に入れていませんあなたが持っている 'startFrom'フィルタ.... – Claies

+0

質問を編集し、コメントにコードを追加しないでください。コメントは永続的ではなく、書式設定できません。 – Claies

+0

私はproductID属性がINTとして解析されていないと思います。 – necross

答えて

0

はい。 (INTとしてDBに格納されていても、数値に対してソートを行うためにintに変換する必要があります)

私の場合、私はPHPを使用しています私のPHPファイルで$http.get('ajax/getItems.php').success(function(data){...}

を使用してDBから項目を取得するには: 私は、行を追加しました:。

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

はだから今、この列の値はINTに強制され

+0

INTへのあなたの値の変換は実際にあなたの問題を解決しましたか?この変更をどのようにして行ったのかを示すことができるので、将来問題のある人は何をすべきか知ることができますか? – Claies

+0

が説明を追加しました。 – necross

関連する問題