0

orderByangular を使用して複数のフィールドを並べ替えようとしていますが、次のような構文エラーが発生します。

構文エラー、認識されない式: div[ng-repeat='r in vm.GetRequests() | フィルター: 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 に感謝します :)

4

2 に答える 2

0

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

filter:vm.SearhText は関数でなければならないので、最後に () を付けます。

于 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 が提案したように、それらを 1 つの orderBy 式に結合することを好みます。

于 2014-12-29T11:32:00.063 に答える