我正在尝试显示一个电影列表,每个电影都有一个标题,系列名称和一个系列号。
我想要订购这些电影的方式是将具有相同系列的电影组合在一起,并按照其序列号在该组内进行排序。整个列表按标题排序(除非电影有一个系列名称,在这种情况下,它显然按系列名称排序)。例如,如果我有以下电影:
Up ( no series )
500 Days of Summer ( no series)
Alien ( series: 'Alien', seriesnumber: 1 )
Aliens ( series: 'Aliens', seriesnumber: 2 )
Alien Resurrection ( series: 'Alien Resurrection, 'seriesnumber: 4 )
Alien 3 ( series: 'Alien 3, 'seriesnumber: 3 )
他们将被命令为:
500 Days of Summer
Alien
Aliens
Alien 3
Alien Resurrection
Up
我已经在我的SQL查询中实现了这个排序,所以我可以按照预期的顺序显示这些项目,只要我不对ng-repeat应用任何过滤器。 (对于那些想知道的人,SQL查询ORDER BY是:
ORDER BY CASE WHEN seriesName is NOT NULL THEN seriesName ELSE title END
有什么办法可以通过使用ng-repeat的顺序来获得这种排序吗?我希望在ng-repeat中使用它的唯一原因是用户可以添加标题,并且当它们被添加时它们被正确排序 - 所以如果有另一种方法来获得该解决方案,那将是值得赞赏的。
答案 0 :(得分:2)
是的,你可以介绍
$scope.decoratedName = function(title, seriesnumber) {
return title + '-' + seriesnumber;
}
然后使用ng-repeat ... orderBy:decoratedName(title, seriesnumber)
。
答案 1 :(得分:0)
orderBy
还有一个数组可以为你节省一些JavaScript:
<div ng-repeat="data in datum | orderBy: ['name', 'ip']">