2014-09-15 20 views
5

Desidero poter filtrare la mia tabella con molti parametri passati come una matrice. Quindi posso costruire una serie di parametri di filtro e passarli dentro. Non voglio dichiarare esplicitamente quali colonne filtrare perché potrebbero esserci molte colonne (alcune che verranno mostrate e altre no).Filtro AngularJS con più parametri

L'HTML ha un aspetto simile al seguente;

<tr ng-repeat="item in infoData | filter:['param1','param2']"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 

C'è via per filtrare una tabella con più parametri?

Grazie

risposta

5

Questo è il modo rapido e sporco per compiere quello che ti serve.

Innanzitutto creare un filtro personalizzato nel controller qualcosa di simile:

$scope.customFilter = function(param1, param2) { 
    return function(item) { 
     //return custom stuff here 
    } 
} 

poi nel codice HTML si esegue questa operazione

<tr ng-repeat="item in infoData | filter:customFilter(param1, param2)"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 

questo è un esempio di un filtro personalizzato

app.filter('customFilter', function (param1, param2) { 
    return function (item) { 
     //return custom stuff here 
    }; 
}); 

e ora nel codice HTML fai questo:

<tr ng-repeat="item in infoData | customFilter(param1, param2)"> 
    <td>{{item.data1}}</td> 
    <td>{{item.data2}}</td> 
    <td>{{item.data3}}</td> 
    <td>{{item.data4}}</td> 
</tr> 
+0

Non dovrebbe essere aggiunto a un filtro personalizzato, anziché al controller? – Ben

+0

Questo è il modo rapido e sporco, ma è sicuramente possibile creare un filtro personalizzato, soprattutto se il filtro è complesso. Ho aggiornato la risposta. –