Elementos de ajuste condicional ng-repeat angular en elemento (elementos de grupo en ng-repeat)

Intento agrupar los elementos en una repetición ng usando una condición.

Una condición de ejemplo es agrupar todos los elementos con la misma hora.

Los datos:

[ {name: 'AAA', time: '12:05'}, {name: 'BBB', time: '12:10'}, {name: 'CCC', time: '13:20'}, {name: 'DDD', time: '13:30'}, {name: 'EEE', time: '13:40'}, ... ] 

El campo ‘tiempo’ es en realidad una marca de tiempo (1399372207) pero con el tiempo exacto en que la salida del ejemplo es más fácil de entender.

Estoy enumerando estos artículos usando ng-repeat:

 

{{r.name}}

también intenté con:

 

{{r.name}}

Un resultado válido es:

 

AAA

BBB

CCC

DDD

EEE

Mi última opción, si no hay una solución simple para mi problema, sería agrupar los datos y luego asignarlos a la variable de ámbito utilizada en ng-repeat.

¿Alguna idea?

Puede usar groupBy filter of angular.filter module.
para que pueda hacer algo como esto:

uso: collection | groupBy:property collection | groupBy:property
utilizar propiedad anidada con notación de puntos: property.nested_property
JS:

 $scope.players = [ {name: 'Gene', team: 'alpha'}, {name: 'George', team: 'beta'}, {name: 'Steve', team: 'gamma'}, {name: 'Paula', team: 'beta'}, {name: 'Scruath', team: 'gamma'} ]; 

HTML:

 
    Group name: {{ key }}
  • player: {{ player.name }}

RESULTADO:
Nombre del grupo: alfa
* jugador: Gene
Nombre del grupo: beta
* jugador: George
* jugador: Paula
Nombre del grupo: gamma
* jugador: Steve
* jugador: Scruath

ACTUALIZACIÓN: jsbin

Primero haz un grupo en Controller:

  $scope.getGroups = function () { var groupArray = []; angular.forEach($scope.data, function (item, idx) { if (groupArray.indexOf(parseInt(item.time)) == -1) { groupArray.push(parseInt(item.time)); } }); return groupArray.sort(); }; 

Luego haz un filtro para eso:

  myApp.filter('groupby', function(){ return function(items,group){ return items.filter(function(element, index, array) { return parseInt(element.time)==group; }); } }) ; 

Luego cambia la plantilla:

  

{{r.name}}

VER DEMO

Simplemente una solución HTML simple para grupos estáticos.

 
    Group name: Football
  • Player Name: {{ player.name }}
  • Group name: Basketball
  • Player Name: {{ player.name }}

Salida:

Nombre del grupo: Fútbol
– Nombre del jugador: Nikodem
– Nombre del jugador: Lambert
Nombre del grupo: Baloncesto
– Nombre del jugador: John
– Nombre del jugador: Izaäk
– Nombre del jugador: Dionisia