Angularjs - 简单的ng-repeat orderBy过滤器不起作用

时间:2014-10-06 10:22:29

标签: javascript arrays angularjs sorting angularjs-orderby

我有一个简单的对象数组:

  $scope.asd = [{"approved":true,"id":"542fb8972be5b5cc4356dd51","username":"k"},
{"approved":false,"id":"542fbea3bae6fe4449c838d5","username":"tototod"},
{"approved":false,"id":"54324929afafdb92209b2474","username":"asdasd"}
];

然后在视图中我想打印值和orderBy id或用户名,如下所示:

<div ng-repeat="row in asd | orderBy:username:reverse">
{{row.username}}
</div>

OR

<div ng-repeat="row in asd | orderBy:id:reverse">
    {{row.id}}
    </div>

但它不起作用,它可以是什么?

我没有控制台错误,我只是按照指南:https://docs.angularjs.org/api/ng/filter/orderBy

任何有用的帮助,谢谢

1 个答案:

答案 0 :(得分:4)

在您的示例中,usernameid应该被引用!该表达式必须求值为一个字符串,用于查找对象属性。请再次参考文档,您将看到predicate是一个解析为字符串值的变量。

解决方案:

<div ng-repeat="row in asd | orderBy:'username':true">
    {{row.username}}
</div>

此外,reverse应评估为布尔表达式。

为您的数据工作fiddle