我使用orderBy指令反向排序一些数字字符串,可以与ngRepeat一起使用。
<div ng-repeat="item in standings| orderBy:['-points', '-gd', 'team_name']">
<p>{{item.gd}}
</div>
所以它是按顺序排列(按优先顺序排列)&#39;点&#39;然后&#39; gd&#39; (目标差异),然后&#39; team_name&#39; (按字母顺序)。
gd
值正确按降序排序。我遇到的问题是负数值。在这种情况下,数字作为字符串返回,而orderBy函数并不理解"-2"
小于"-1"
,而是相反。
如何使用ng-repeat将数值解析为整数,特别是用减号解决这个排序问题?
我考虑过制作一个过滤器,例如:{{item.gd | *filterHere* }}
,但初始ng-repeat指令不会看到这一点,它需要将源值作为整数。
任何帮助都将不胜感激。
更新
我尝试过这个过滤器,但是当我在ng-repeat中调用它时,它什么都不返回:
app.filter('stringToInteger', function() {
return function(input) {
angular.forEach(input, function(value) {
parseInt(value.gd);
})
};
return input;
});
在视图中
<p ng-repeat="item in standings | orderBy: '-gd' | stringToInteger">GD = {{item.gd}}</p>
答案 0 :(得分:2)
过滤器应该是这样的。
app.filter('stringToInteger', function() {
return function(input) {
angular.forEach(input, function(value) {
value.gd = parseInt(value.gd);
})
return input;
};
});
像这样使用它。
<tr ng-repeat="team in teams | stringToInteger | orderBy:'-gd'">
Plunker链接以供参考。