我看到很多答案和文档表明,你可以将属性名称的数组传递给Angular的orderBy过滤器以按多个字段排序。然而,我的一个对象属性是以文本形式存储的数字(字段可以是“100”,“75”,“50”或“<25”)。为了将这些值作为数字进行排序,我一直在使用:
<div ng-repeat="item in items | orderBy:sortFunction">
{{item.itemStatus}} - {{item.itemLevel}}
</div>
//Function in controller...
$scope.sortFunction = function(item) {
return parseInt(item.itemLevel);
}
现在我想先按item.itemStatus进行排序,然后按数字的item.itemLevel进行排序。是否有一种方法可以在不改变我的数据模型的情况下实现这一点?我可以循环遍历所有项目并添加一个新属性,该属性是数字的item.itemLevel,然后使用过滤器进行过滤。
ng-repeat="item in items | orderBy:['itemStatus','itemLevelAsNumber']
但我想知道是否有更好的方法来完成它。我已尝试过
ng-repeat="item in items | orderBy:['itemStatus',sortFunction]
但我认为在这种情况下使用函数期望将属性名称作为字符串返回。
谢谢!
item in items | orderBy:['itemStatus',sortFunction]
应该没问题。 通过这个 fiddle 得到证明。 - George