angularjs - Angular 模板 : Loop over object, 按值排序

标签 angularjs

我有一个 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/

相关文章:

javascript - 如何创建字符串数组,每个字符串都用单引号括起来(javascript)

angularjs - 如何使用 browserify 运行 Protractor ?

javascript - 一个简单的 Angular JS $http 对象响应有问题吗?

jquery - 多个ajax请求 Angular : limit the number of active to 10

javascript - Angularjs - $http 请求在函数内部不起作用

javascript - ajax 请求数据未加载 - Angular JS

javascript - Angular js 中未定义 modalInstance

javascript - AngularJS + JQuery = 类型错误 : Cannot read property 'then' of undefined

javascript - 秒表/倒计时 (00 :00:00) format with Javascript

javascript - 我无法从 .factory AngularJS 1.6 访问对象的属性