使用orderBy对ng-repeat中的对象数组进行排序

时间:2016-06-02 19:51:09

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

我有一个对象数组,我试图通过布尔对象属性对它们进行排序(或分组),并使用angularjs' ng-repeat功能。

我尝试使用orderBy和groupBy,但没有一个工作。

这是我的HTML:

<tbody md-body>
                        <tr md-row ng-repeat="item in dashboardCtrl.unAckAlertList | limitTo : 4 | orderBy: 'item.urgent'">
                            <td md-cell>
                                <i ng-if="item.urgent" class="fa fa-warning" style="font-size:22px;color:red;"></i><i ng-if="!item.urgent" class="fa fa-warning" style="font-size:22px;color:slategray;"></i><span><b> {{item.status}}</b></span>
                            </td>
                            <td md-cell>
                                {{item.MyName}} / {{item.sourceProperty}}
                            </td>
                            <td md-cell>
                                {{item.name}}
                            </td>

它从来没有奏效,我想知道为什么。

3 个答案:

答案 0 :(得分:1)

您应该使用以下语法:

orderBy: 'urgent'

documentation使用string作为orderBy参数的引用:

  

string:一个Angular表达式。此表达式的结果用于比较元素(例如name以按名为name的属性排序...)

答案 1 :(得分:1)

orderBy在数组的当前元素中查找您告诉它的属性。

在您提供的代码段中,您为当前元素指定了item的名称,这是orderBy将查找属性的内容。

您无需撰写orderBy: item.urgent。如果你写orderBy: urgent,Angular应该能够完成其余的工作。

答案 2 :(得分:0)

2件事导致了这个错误:

  1. 首先应对数组进行排序,然后限制视图。

  2. 无论您想要排序哪个对象属性,都应该只放置属性名称,而不是对象本身。

  3. 而不是:

    ;

    应该是

    ng-repeat="item in dashboardCtrl.unAckAlertList | limitTo : 4 | orderBy: 'item.urgent'"