2014-10-06 65 views
2

我有对象的简单数组:Angularjs - 简单的NG-重复排序依据过滤器不会工作

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

然后在视图我想打印的价值观和排序依据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

appriciated任何帮助,感谢

+0

'reverse'是可选的 - 你可以放弃它 – Grundy 2014-10-06 10:33:10

+0

@Grundy如果他真的想要颠倒顺序! – Yoshi 2014-10-06 10:33:34

+0

@Yoshi是的,但在OP没有足够的信息:-) – Grundy 2014-10-06 10:34:30

回答

4

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

解决方案:

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

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

为您的数据工作fiddle

+0

天哪真棒它的作品! – sbaaaang 2014-10-06 10:38:03

+0

没问题,只要注意什么是表达式或什么是变量。这样你会避免很多头痛。 – 2014-10-06 10:39:11

+0

是啊谢谢你,我没有注意到引号:D你救了我的一天谢谢 – sbaaaang 2014-10-06 10:40:03