groupBy
返回一个对象,并且orderBy
期望数组作为参数,所以这就是你应该使用的原因toArray
筛选。
toArray
像这样工作:
Usage: object | toArray: addKey[optional]
如果 addKey 设置为 true,过滤器还会附加一个新属性$key
包含我们正在迭代以引用属性的对象中使用的原始键的值
所以,你可以做这样的事情example,或者看看jsbin http://jsbin.com/mukahonaxu/1/edit?html,js,output
JS:
$scope.groups = [
{ category: 'alpha', id: 2 },
{ category: 'beta', id: 3 },
{ category: 'gamma', id: 0 },
{ category: 'alpha', id: 4 },
{ category: 'beta', id: 5 },
{ category: 'gamma', id: 1 }
];
HTML:
<ul ng-repeat="group in groups | groupBy:'category' | toArray:true | orderBy:min">
<!-- print the group name -->
<li>{{ group.$key }}</li>
<!-- iterate over the group members and order each group by id -->
<li ng-repeat="item in group | orderBy:'id'">
{{ item }}
</li>
</ul>
RESULT:
- alpha
- {“类别”:“alpha”,“id”:2}
{“类别”:“alpha”,“id”:4}
beta
- {“类别”:“测试版”,“id”:3}
{“类别”:“测试版”,“id”:5}
gamma
- {“类别”:“伽玛”,“id”:0}
- {“类别”:“伽玛”,“id”:1}