angular orderBy多个字段有语法错误

时间:2014-12-29 11:10:20

标签: angularjs angularjs-orderby

我正在尝试使用角度orderBy来排序多个字段,但我收到语法错误:

  

语法错误,无法识别的表达式:div [ng-repeat ='r in   vm.GetRequests()| filter:vm.SearchText |   ORDERBY:[ '名字', '姓']']

似乎有另外的符号']',但我没有在html

html看起来像:

<div ng-repeat="r in vm.GetRequests() | filter: vm.SearchText |orderBy:'RequestedOn'| orderBy:['LastName','FirstName']">
{{r.LastName}} : {{r.FirstName}}
</div>

函数GetRequests()返回一个对象数组,如下所示:

[{FirstName:"Test1", LastName:"First"},{FirstName:"Test2",LastName:"Second"},{FirstName:"Test3",LastName:"Third"}]

任何人都可以帮我解决这个问题吗?

更改HTM - 删除orderBy:'RequestedOn'

<div ng-repeat="r in vm.GetRequests() | filter: vm.SearchText | orderBy:['LastName','FirstName']">
{{r.LastName}} : {{r.FirstName}}
</div>

但我仍然遇到语法错误:

Uncaught Error: Syntax error, unrecognized expression: div[ng-repeat='r in vm.GetRequests() | filter: vm.SearchText | orderBy:['LastName','FirstName']'] 

更新

语法似乎来自于浏览器链接,因为当我收到错误时,订单会起作用。 并建议将所有订单属性放在数组中

非常感谢大家的投入,特别感谢RishiPrakash:)

2 个答案:

答案 0 :(得分:0)

尝试<div ng-repeat="r in vm.GetRequests() | filter: vm.SearchText() | orderBy:['RequestedOn','LastName','FirstName']">

filter:vm.SearhText必须是函数so()的结尾。

答案 1 :(得分:0)

我认为过滤器仅适用于数组,不会评估函数。 我会将请求分配给控制器中的范围变量:

JS:

$scope.requests = vm.GetRequests();


HTML:

<div ng-repeat="r in requests | filter: vm.SearchText | orderBy:['RequestedOn','LastName','FirstName']"> {{r.FirstName }}, {{r.LastName}} </div>



注意:我不认为你的数组排序存在问题,尽管我更喜欢将它们组合在一个orderBy表达式中,如Rishi Prakash建议的那样。