Angular ng-repeat order将多个字段作为一个字段

时间:2016-05-17 15:48:28

标签: javascript angularjs sorting angularjs-ng-repeat angularjs-orderby

我的问题与orderBy multiple fields in Angular不一样。

我的数组中包含一些

的对象
{
  estimatedStartDate : "..."
}

有些人:

{
  actualStartDate : "..."
}

有没有办法让我们考虑这两个领域。

orderBy:['estimatedStartDate','actualStartDate'] 

^这不起作用。

这是一个小提琴:http://jsfiddle.net/g201tudg/1/

假装这两个字段都相同然后排序?

5 个答案:

答案 0 :(得分:3)

向您的控制器添加这样的功能:

$scope.sortByEitherDate = function(row) {
    if (row.actualStartDate) {
        return row.actualStartDate;
    }
    return row.estimatedStartDate;
}

然后用orderBy命令:sortByEitherDate

工作小提琴:http://jsfiddle.net/g201tudg/4/

答案 1 :(得分:1)

您可以编写自己的自定义订单功能。这将需要一个参数 - 您的卡 - 并返回这些字段中的任何一个。

<强> JS

    $scope.sort = function(card) {
        return card.actualStartDate !== undefined ? card.actualStartDate : card.estimatedStartDate;
    }

<强> HTML

<div ng-repeat="card in myCards | orderBy:sort">...</div>

答案 2 :(得分:0)

https://stackoverflow.com/a/25116296/2474688
试试这个,看它是否有效。只是通过这个线程看起来他们正在通过自定义过滤器对索引进行排序。

答案 3 :(得分:0)

您可以使用自定义OrderBy排序:

<tr ng-repeat="contact in contacts | orderBy:randomSort"> 

$scope.randomSort = function(contact) {
  // your condition
};

答案 4 :(得分:0)

根据我的经验,Angular ngRepeat订单不喜欢未定义的值,因此将缺少的成员添加为null可以解决您的问题。

顺便说一下,你不需要提及&#34; doc&#34;。写这个成员就足够了。

此外,编写自定义排序方法会大量消耗客户端资源。

以下是正确编辑的小提琴: http://jsfiddle.net/g201tudg/2/