2016-04-22 138 views
-1

對象我有一個對象排序在angularjs NG重複指令

Object {1: "CMAR0002", 2: "CMAR0003", 4: "CMAR0001"} 

我正在使用NG-重複指令該對象,但我想通過值排序。但問題是,角度orderBy過濾器需要數組對象。但我只有非常簡單的物體在這裏;)

在此先感謝

+1

[如何在AngularJs中使用ng-repeat過濾(key,value)]可能的副本](http://stackoverflow.com/questions/14788652/how-to-filter-key-value-with-ng- repeat-in-angularjs) – isherwood

+0

@isherwood這是不重複的,他們有對象的對象,但我有一個普通的簡單對象 – Garry

回答

-1

這樣做:

<li ng-repeat="(key, value) in Object | orderBy: key"> 
    {{ key }} - {{ value }} 
</li> 

小提琴:http://jsfiddle.net/oo4cb9xf/1/

+0

它不工作,它應該按值排序。 – Garry

1

通過Angular ng-repeat documentation

It is possible to get ngRepeat to iterate over the properties...

However, there are a limitations compared to array iteration, like "The built-in filters orderBy and filter do not work with objects, and will throw if used with one"

如果您正在碰到這些限制之一,推薦的工作你需要將你的對象轉換爲一個數組,然後在將它提供給ngRepeat之前,按照你喜歡的順序排序。你可以用toArrayFilter這樣的過濾器來做到這一點,或者自己實現一個$ watch對象。

無論如何,你可以嘗試實現你自己的過濾器,但它會很醜,需要很多努力(可能沒有)。

希望它能幫助你!

+0

我嘗試過toArrayFilter,因爲我的對象值不是對象,所以我需要在ng-repeat中添加「toArray:false」,但它通過一個錯誤「TypeError:Object.values不是函數」thttp://plnkr.co/edit/atENz4yKb8e6wrgioy3g?p =預覽 – Garry

+0

正確。在這個例子中它有一個老版本的js.file。如果您查看[當前版本的toArrayFilter](https://github.com/petebacondarwin/angular-toArrayFilter/blob/master/toArrayFilter.js)並嘗試使用它,它會起作用[Plunker](http: //plnkr.co/edit/HVnIQGH21JkxJqSCDzLs?p=preview) – MaKCbIMKo