我有一个 javascript 对象,我想以 Angular 循环。对象中的键是名称,值是排名。我想按排名对元素进行排序。我尝试了这个,但没有成功:
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
最佳答案
将数据结构化为对象总是让我很难重复。我总是需要首先将其转换为对象数组。而不是将您的数据设置为:
{
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
需要一个对象数组
关于angularjs - Angular 模板 : Loop over object, 按值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474649/