Cómo hacer que ng-repeat filtre resultados duplicados
Estoy ejecutando un archivo simple ng-repeat
sobre un archivo JSON y quiero obtener nombres de categorías. Hay alrededor de 100 objetos, cada uno de los cuales pertenece a una categoría, pero sólo hay alrededor de 6 categorías.
Mi código actual es este:
<select ng-model="orderProp" >
<option ng-repeat="place in places" value="{{place.category}}">{{place.category}}</option>
</select>
El resultado son 100 opciones diferentes, en su mayoría duplicadas. ¿Cómo uso Angular para comprobar si {{place.category}}
ya existe y no crear una opción si ya existe?
editar: En mi javascript, $scope.places = JSON data
solo para aclarar
Aceptado
Puede usar el filtro único de AngularUI (código fuente disponible aquí: Filtro único de AngularUI ) y usarlo directamente en ng-options (o ng-repeat).
<select ng-model="orderProp" ng-options="place.category for place in places | unique:'category'">
<option value="0">Default</option>
// unique options from the categories
</select>
O puedes escribir tu propio filtro usando lodash.
app.filter('unique', function() {
return function (arr, field) {
return _.uniq(arr, function(a) { return a[field]; });
};
});