我的数据被排序为字符串:
ID Name
1122162089 John McGill
1461 Cynthia Salazar
22925 Sylvan Knutsen
24930 Amrit Advani
我需要将其排序为数字
var sortedData = function (records,optionsData) {
var sortField = optionsData.sort[0].field;
var sortDir = optionsData.sort[0].dir !== "asc";
var tempRecords = $filter('orderBy')(records, sortField, sortDir);
return tempRecords;
}
其中
sortField = "ID" and sortDir = "asc"
尚未弄清楚如何在控制器中编写自定义过滤条件。。
奇怪的是数据中的ID是数字的:
[{
ID: 1122162089,
Name: "John McGill"
},{
ID: 1461,
Name: "Cynthia Salazar"
}]
您的数据被排序为字符串,这很可能是因为ID是字符串。您可以将自定义比较器添加到$过滤器中以处理字符串ID。另外,您可以通过将OrderByFilter注入您的控制器来访问Orderby过滤器:
.controller('MyCtrl', ['$scope', 'orderByFilter', function($scope, orderBy)
然后,您可以使用这样的OrderByFilter使用自定义比较器对数据进行排序:
var sortedData = function(records, optionsData) {
var sortField = optionsData.sort[0].field;
var sortDir = optionsData.sort[0].dir !== "asc";
var tempRecords = orderBy(records, sortField, sortDir, function(val1, val2) {
var v1 = parseInt(val1.value);
var v2 = parseInt(val2.value);
if (v1 === v2) {
return 0;
} else {
return v1 < v2 ? -1 : 1;
}
});
return tempRecords;
};
在我的情况下,我在表中使用订单,请查看此示例。您必须将要订购的元素放在"表达"中,而"反向"是如何显示,上升或减少的数据,以减少和false的升级。
。<tr ng-repeat="obj in usuarios | orderBy : expression : reverse">
</tr>
如果字符串的问题保留,请尝试使用parseint()。