我有一个对象数组,我试图通过布尔对象属性对它们进行排序(或分组),并使用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>
它从来没有奏效,我想知道为什么。
答案 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件事导致了这个错误:
首先应对数组进行排序,然后限制视图。
无论您想要排序哪个对象属性,都应该只放置属性名称,而不是对象本身。
而不是:
;
应该是
ng-repeat="item in dashboardCtrl.unAckAlertList | limitTo : 4 | orderBy: 'item.urgent'"