15

1m,並用它的偉大工程:角NG-重複GROUPBY和使用這種過濾器<a href="https://github.com/a8m/angular-filter#groupby">https://github.com/a8m/angular-filter#groupby</a>訂購,像這樣我的數據維持秩序

<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' "> 

現在我試着去保持那組,由category.order順序。

這可能嗎?

我試過管道像這樣:

<div ng-repeat="(key, value) in tags.tags.objects | groupBy:'category.name' | orderBy:'category.order' "> 

但它不作任何區別

回答

17

orderBy過濾器不與對象ngRepeat工作。所以,你可以做的是這樣的:

<!-- 
    Note: toArray filter also attaches a new property $key 
    to the value containing the original key that was used in the object. 
--> 

<div ng-repeat="tags in tagsList | groupBy:'prop' | toArray:true | orderBy:'$key'"> 
    Group name: {{ tags.$key }} 
    <p ng-repeat="tag in tags | orderBy:'prop'"> 
    {{ tag.name }} 
    </p> 
</div> 

參見:toArray過濾

+0

這是刷新每次我做編輯在我的數組的對象現在造成perforance問題時我的清單,我認爲它與ToArray的做,有什麼辦法呢? – TWilly 2016-09-15 13:05:34

3

GROUPBY應該永遠是最後一個在NG-重複.. 所以設置排序依據第一和GROUPBY最後再用你可以使用$ index 進行追蹤,這樣正常的ng-repeat就可以了。

ng-repeat="item in items orderBy:'price' | groupBy:'name' track by $index" 

... 希望它可以幫助甚至它的有點晚了!

1

爲了部分djsiz的答案(軌道由是沒有必要的,它缺少一個管道),你可以這樣做:

<div ng-repeat="(key, value) in tags.tags.objects | orderBy:'category.order' | groupBy:'category.name'"> 

的GROUPBY創建一個對象,但排序依據需要一個數組...如果你之前的OrderBy組,它應該正確排序

https://jsfiddle.net/r0m4n/kfho6r26/