2016-04-22 115 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