在angularjs ng-repeat指令中对对象进行排序

Sort an object in angularjs ng-repeat directive

本文关键字:对象 排序 angularjs ng-repeat 指令      更新时间:2023-09-26

我有一个对象

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

我在 ng-repeat 指令中使用此对象,但我想按值对其进行排序。但问题是角度 orderBy 过滤器需要对象数组。但我这里只有非常简单的对象;)

提前致谢

通过 Angular ng-repeat 文档:

可以让 ngRepeat 迭代属性...

但是,与数组迭代相比,存在一个限制,例如"内置过滤器 orderByfilter 不适用于对象,如果与一个对象一起使用,则会抛出"

如果您遇到这些限制中的任何一个,建议的解决方法是将对象转换为一个数组,该数组在将其提供给 ngRepeat 之前按您喜欢的顺序排序。您可以使用 toArrayFilter 等过滤器执行此操作,也可以自己在对象上实现$watch。

无论如何,您可以尝试为此实现自己的过滤器,但它会非常丑陋,并且需要付出很多努力(可能一无所获)。

希望它能帮助你!

这样做:

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

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