2

我正在尝试显示电影列表,每个电影都有标题、系列名称和系列编号。

我希望这些电影的排序方式是将具有相同系列的电影分组在一起,并在该组内按其系列号排序。整个列表按标题排序(除非电影有系列名称,在这种情况下显然是按系列名称排序)。例如,如果我有以下电影:

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 的 order by 来获得这种排序?我想在 ng-repeat 中使用它的唯一原因是,用户可以添加标题,并且在添加标题时,它们会被正确排序 - 因此,如果有另一种获得该解决方案的方法,将不胜感激。

4

2 回答 2

2

是的,你可以介绍

$scope.decoratedName = function(title, seriesnumber) {
    return title + '-' + seriesnumber;
}

然后使用ng-repeat ... orderBy:decoratedName(title, seriesnumber).

于 2013-07-09T09:21:55.177 回答
0

orderBy还需要一个数组,它可以为您节省一些 JavaScript 行:

<div ng-repeat="data in datum | orderBy: ['name', 'ip']">

见这里:http: //jsfiddle.net/xjcw6/

于 2014-04-17T21:36:42.440 回答