0

我正在尝试使用 angularorderBy对多个字段进行排序,但出现语法错误:

语法错误,无法识别的表达式: div[ng-repeat='r in vm.GetRequests() | 过滤器:vm.SearchText | orderBy:['LastName','FirstName']']

似乎出现了额外的标志']',但我在 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 :)

4

2 回答 2

0

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

filter:vm.SearhText 必须是一个函数 so () 在它的末尾。

于 2014-12-29T11:13:53.913 回答
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>



注意:我认为您对数组进行排序的方式没有问题,尽管我更喜欢按照 Rishi Prakash 的建议将它们组合成一个 orderBy 表达式。

于 2014-12-29T11:32:00.063 回答