2013-08-17 8 views
5

Tak więc mam zestaw danych firm przechowywanych w zmiennej w kontrolerze.AngularJS ng-powtórzenie filtrowania z instrukcją OR

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

Następnie mam swoją listę, na której chcę wyświetlić listę wszystkich firm, zarówno z a lub b. Myślałem, że wysyłanie i tablica będą działały jako instrukcja lub. Okazuje się, że to bardziej jak i-oświadczenie.

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

Powyższy kod wypisze „pierwszą firmę” natomiast chciałbym go do listy zarówno „pierwszą firmę” i „drugą firmę”. Wiem, że mógłbym zmanipulować plikiem $ scope.companies z poziomu kontrolera, ale chciałbym wiedzieć, czy istnieje jakiś "rodzimy" sposób, aby to osiągnąć w pierwszej kolejności.

Pozdrawiam! // Richard

Odpowiedz

11

jedynymi opcjami jest użycie filtra przy użyciu funkcji:

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

Gdzie

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

Źródło: http://docs.angularjs.org/api/ng.filter:filter#parameters

+0

Dzięki! O wiele bardziej eleganckie niż permutacje zbioru danych. Dziękuję również za źródło! –

+0

Dzięki! @RichardLilja, dlaczego nie potwierdziłeś tej odpowiedzi jako rozwiązania twojego pytania? Sprawia, że ​​jest ona wyższa w wyszukiwarkach pod kątem wyszukiwań pasujących do Twojego problemu, pomogłaby mi znaleźć to eleganckie rozwiązanie, zanim zmarnuje czas na tworzenie niestandardowego filtru –

Powiązane problemy