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 がコントローラ内にある場所:
$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";
};
したがって、文字列を返します。
方法を並べ替えるために、配列内の個々の項目を必要とする関数で並べ替える方法はありますか?