我正在嘗試使用'orderBy'過濾器在列表中對列進行排序。我的代碼是這樣的:如何判斷使用orderBy時的值的類型?
JS: retrieving data using $http.get in the controller
sample Json:
$scope.items = [{id:111, name:'AAA', value:120.5},
{id:222, name:'BBB', value:215.2},
{id:333, name:'CCC', value:412.32},
{id:444, name:'DDD', value:852.25},
{id:555, name:'EEE', value:742.2]
$scope.sortColumn = "name";
$scope.reverseSort = false;
$scope.sortData = function(column){
$scope.reverseSort = ($scope.sortColumn == column) ? !$scope.reverseSort : false;
$scope.sortColumn = column;
};
$scope.getSortClass = function(column){
if($scope.sortColumn == column){
return $scope.reverseSort ? 'headerSortDown' : 'headerSortUp';
}
return 'tableHeader';
};
html:
<table>
<thead>
<tr>
<td ng-click="sortData('id')" ng-class="getSortClass('id')">id</td>
<td ng-click="sortData('name')" ng-class="getSortClass('name')">name</td>
<td ng-click="sortData('value')" ng-class="getSortClass('value')">value</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in items | orderBy:sortColumn:reverseSort">
<td>{{item.id | number}}</td>
<td>{{item.name}}</td>
<td>{{item.value | number}}</td>
</tr>
</tbody>
問題是角取我的值作爲字符串進行排序的目的,然而,「ID」和「值」列類型是「數字」和當我使用' typeof()'函數在瀏覽器控制檯中,它返回'數字'。我嘗試在這兩列中使用'parseFloat'作爲值,然後正確排序。 我爲什麼要解析這些值?我不想在我的js代碼中做額外的循環來完成這些轉換。有沒有人知道這個問題的更好的解決方案?
你能給我們一些你寫的代碼嗎?這可能有很多答案,具體取決於你寫的東西。 – noelmace
所以你說'orderBy:'id''不起作用? –
我用我的代碼示例更新了我的原始問題。 – Nisman