我正在使用 ng-repeat
列出对象数组中的项目。我想使用 orderBy
(或者可能是一些自定义排序过滤器)对这些项目进行排序。
但是,我想要排序的字段并不保存在对象数组本身中,而是我有一个函数,可以用来为每个单独的对象计算它;但它需要将每个单独的对象传递到其中才能做到这一点。
类似这样的事情:
<table>
<tr ng-repeat="item in sortedItems = (items | orderBy:'getStatus(item)':reverse)">
<td>Title: {{item.title}}</td>
<td>Status: {{getStatus(item)}}</td>
</tr>
</table>
getStatus 在 Controller 内部的位置为:
$scope.getStatus = function(item){
var days = item.days
if(days<=100){
var x=100-item.days+" ";
if(days===99){
return x+"day left";
}
return x+"days left";
}
return "Completed";
};
所以它返回一个字符串。
有什么方法可以按需要数组中每个单独项目的函数进行排序,以便按方式排序吗?
最佳答案
当然,只需从 orderBy
子句中删除参数即可,它需要单个项目:
<tr ng-repeat="item in sortedItems = (items | orderBy: getStatus :reverse)">
关于javascript - 使用 AngularJS 函数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679704/