尽量保持代码尽可能小(避免编写排序函数)。我有一个可以排序的简单数据表。
此示例中的问题是“得分”不按数字排序。用户'Julie'的得分最低为'9.12'但是在排序时似乎是词法上的。
中使用的示例的修改版本以下是代码段和关联的plunker。
<pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre>
<hr/>
<table class="user">
<tr>
<th><a href="" ng-click="predicate = 'name'; reverse=false">Name</a>
(<a href="" ng-click="predicate = '-name'; reverse=false">^</a>)</th>
<th><a href="" ng-click="predicate = 'score'; reverse=!reverse">user score</a></th>
<th><a href="" ng-click="predicate = 'age'; reverse=!reverse">Age</a></th>
</tr>
<tr ng-repeat="user in users | orderBy:predicate:reverse">
<td>{{user.name}}</td>
<td>{{user.score}}</td>
<td>{{user.age}}</td>
</tr>
</table>
答案 0 :(得分:2)
问题是您的数据结构中的得分属性是一个字符串。你可以:
A)将其更改为数字score:9.12
instead of score:'9.12'
http://plnkr.co/edit/YItGeFfFLN8OnXeejv7m?p=preview
B)如果您无法更改数据,请编写功能(&#34; Getter功能。此功能的结果将使用&lt;,=,&gt ; operator&#34;)用于orderBy的表达式部分,以便将字符串返回给一个数字进行比较。 <tr ng-repeat="user in users | orderBy:yourfunction:reverse">