Angularjs orderBy with integer Strings

时间:2015-04-17 13:18:25

标签: angularjs angularjs-ng-repeat angularjs-orderby

我有一个Ex:

的数据集
$scope.friends =
      [{name:'John',  score:'10'},
       {name:'Mary',  score:'19'},
       {name:'Mike',  score:'-21'},
       {name:'Adam',  score:'-35'},
       {name:'Julie', score:'29'}];
}]);

我将此数据用作ng-repeat

的来源
<tr ng-repeat="friend in friends | orderBy:'-score' ">
  <td>{{friend.name}}</td>
  <td>{{friend.score}}</td>
</tr>

我想按friends顺序按scoredescending进行排序。如下,

Name    Score
-------------
Julie   29
Mary    19
John    10    
Mike    -21
Adam    -35

但是我得到了输出,

Name    Score
-------------
Julie   29
Mary    19
John    10  
Adam    -35  
Mike    -21

这是一个Demo Plunker

请注意 -21和-35在输出中的顺序不正确,这是因为score属性是String值。如果我将其更改为int值,那么所有都按预期工作。如何克服这一点,请考虑我无法更改score属性的类型。

1 个答案:

答案 0 :(得分:2)

怎么样?
<tr ng-repeat="friend in friends | orderBy:'+-score' ">
  <td>{{friend.name}}</td>
  <td>{{friend.score}}</td>
</tr>

Plunker