我的数据正在按字符串排序:
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"
}]
答案 0 :(得分:1)
您的数据最有可能被排序为字符串,因为ID是一个字符串。您可以将自定义比较器添加到$ filter以处理字符串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;
};
答案 1 :(得分:-1)
在我的情况下,我在表中使用orderBy,看看这个例子。你必须把元素放在你想要订购的&#34;表达&#34;和&#34;反向&#34;数据将如何显示,升序或递减,其中true表示递减,false表示递增。
<tr ng-repeat="obj in usuarios | orderBy : expression : reverse">
</tr>
如果字符串保持问题,请尝试使用parseInt()。