0

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";
};

したがって、文字列を返します。

方法を並べ替えるために、配列内の個々の項目を必要とする関数で並べ替える方法はありますか?

4

1 に答える 1

3

確かに、句からパラメーターを削除するだけでorderBy、個々のアイテムが必要になります。

<tr ng-repeat="item in sortedItems = (items | orderBy: getStatus :reverse)">
于 2014-07-10T14:50:52.903 に答える