2013-08-17 4 views
5

Quindi ho un set di dati di società memorizzate in una variabile in un controller.AngularJS ng-repeat filtering con una istruzione OR

$scope.companies = [ 
    { 
     name: "first company", 
     type: ["a", "b"] 
    }, 
    { 
     name: "second company", 
     type: ["b"] 
    }, 
    { 
     name: "third company", 
     type: ["c"] 
    } 
] 

Quindi ho la mia lista in cui voglio elencare tutte le società di aeb. Pensavo che l'invio e l'array avrebbero funzionato come un'istruzione. Si scopre che è più simile a un'istruzione elettronica.

<ul> 
    <li ng-repeat="company in companies | filter:filters{type: ['a', 'b']}"> 
     {{company.name}} 
    </li> 
</ul> 

Il codice di cui sopra avrebbe lista "prima società", mentre vorrei che alla lista sia la "prima società" e la "seconda società". So che potrei manipolare il set di dati $ scope.companies dal controller, ma vorrei sapere se esiste un modo "nativo" per raggiungere questo obiettivo.

Cordiali saluti! // Richard

risposta

11

Le uniche opzioni è quello di utilizzare un filtro mediante una funzione:

<ul> 
    <li ng-repeat="company in companies | filter:customFunction"> 
     {{company.name}} 
    </li> 
</ul> 

Dove

$scope.customFunction = function(item){ /* true if you want item, false if not */ } 

Fonte: http://docs.angularjs.org/api/ng.filter:filter#parameters

+0

Grazie! Molto più elegante delle permutazioni del set di dati. Grazie anche per la fonte! –

+0

Grazie! @RichardLilja perché non hai convalidato questa risposta come la soluzione alla tua domanda? Rende il rango più alto nei motori di ricerca per le ricerche corrispondenti al tuo problema, mi avrebbe aiutato a trovare questa soluzione elegante prima di perdere tempo creando un filtro personalizzato –

Problemi correlati