2013-02-12 14 views
12

devo filtrare gli elementi in ng-repeat modo che solo gli elementi che non appaiono in alreadyAddedValues ​​() array viene mostrato:Angular.js: filtro ng-repeat dall'assenza nella matrice

<ul class="dropdown-menu"> 
    <li ng-repeat="v in values() | filter: { ????? } ">{{value.name}}</li> 
</ul> 

$scope.values() = function(){ 
    ................ 
} 

$scope.alreadyAddedValues() = function() 
{ 
    //returns an array 
} 

La ricerca di un valore aggiunto già deve eseguire da value.shortName

risposta

30

È possibile, ad esempio, utilizzare una funzione personalizzata per fare il filtraggio:

<li ng-repeat="v in values() | filter:filterAlreadyAdded ">{{value.name}}</li> 

Sul controller:

$scope.filterAlreadyAdded = function(item) { 
    // filter logic here... 
    // return false if item already added, true otherwise 
}; 

jsfiddle: http://jsfiddle.net/bmleite/5VbCJ/

+3

ho fatto un violino alternativo per passare passare la matrice di valori già aggiunti per renderlo un po 'più generico. Situato qui http://jsfiddle.net/4MBbw/ –