2015-09-29 23 views
7

Utilizzando un array, sto cercando di filtrare e mostrare le informazioni unique nell'elenco. Per questo io uso il metodo angular nell'edificio filter.'ng-repeat' Come ottenere i valori `unique`

Ma sto ricevendo errore.

Ecco il mio tentativo (sto filtraggio per SubProjectName)

<ul> 
    <li ng-repeat="project in projectNames | unique: 'SubProjectName' "> 
     {project.SubProjectName}} 
    </li> 
</ul> 

Live Demo

+1

Il filtro integrato di Angular non ha un metodo 'unique'. – muenchdo

+0

è così .. allora quale sarebbe il modo di farlo? qualcuno mi suggerisce? – 3gwebtrain

+1

http://stackoverflow.com/questions/15914658/angular-js-how-to-make-ng-repeat-filter-out-duplicate-results – Sajeetharan

risposta

18

AngularJS non include un filtro unique per impostazione predefinita. È possibile utilizzare quello da angular-filter. Basta inserire il codice JavaScript

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.8/angular-filter.min.js"></script> 

e includono il dependeny nella vostra applicazione:

var app = angular.module('myApp', ['angular.filter']); 

Il codice dovrebbe lavorare subito! Ho modificato il tuo Plunker così funziona.

3

Il filtro unique si sono probabilmente tentando di utilizzare proviene da AngularUI, quindi è necessario includerlo:

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.js"></script> 

e aggiungerlo come dipendenza del modulo:

var app = angular.module('plunker', ['ui.filters']); 
5

Penso che siete alla ricerca di una risposta del genere

var app = angular.module('plunker', []); 

app.controller('MainCtrl', function($scope) { 
    $scope.projectNames=projects 
    $scope.Id = "1"; 
    $scope.SubProjectName="Retail Building"; 

}) 
.filter('unique', function() { 
    return function(projects, subProjectName) { 
    var newprojects =[]; 
    projects.forEach(function(project){ 
     if(project.SubProjectName === subProjectName) 
     newprojects.push(project); 
    }); 
    return newprojects; 
    }; 
}); 

<li ng-repeat="project in projectNames | unique:SubProjectName">{{project.SubProjectName}}</li> 

Demo

+0

È bello farlo invece di aggiungere un altro pacchetto per fare lo stesso funzionalità – TheMiddleMan