我有一个javascript对象,我想以角度循环。对象中的键是名称,值是等级。我想按排名对元素进行排序。我试过这个没有用的东西:
ng-repeat="(name, rank) in topCategories | orderBy: '-rank'"
我也试过没有单词引号围绕" rank"。 结果是元素循环但没有排序。没有记录错误。是否可以在迭代对象时进行排序?
示例数据来源:
{
foo: 5,
bar: 7,
baz: 42
}
编辑检查源代码后,如果提供的参数是对象而不是数组,则很容易看到orderBy
过滤器只是立即返回。 https://github.com/angular/angular.js/blob/master/src/ng/filter/orderBy.js#L68
答案 0 :(得分:2)
将数据结构化为对象总是让我难以重复。我总是需要先将它转换为一个对象数组。而不是将您的数据作为:
{
foo: 5,
bar: 7,
baz: 42
}
尝试将其作为对象数组:
[
{name: 'foo', rank: 5}
{name: 'bar', rank: 7}
{name: 'baz', rank: 42}
]
然后你的HTML很简单:
ng-repeat="result in topCategories | orderBy: '-rank'"
<强> Plunker Example 强>
来源:
Google Groups: Order by object?
Orderby not working with dict syntax on ng-repeat
Has been previously addressed as an issue
消息人士称,orderBy
需要一组对象