2016-07-06 14 views
1

Ich habe folgende Eingabedaten:Angular - Filter nach single ng-Modell, aber auf mehreren Eigenschaften?

$scope.postList = [{ 
    name: "Hello World #1", 
    is_published: false, 
    targeting: false 
    }, { 
    name: "Hello World #2", 
    is_published: true, 
    targeting: true 
    }, { 
    name: "Hello World #3", 
    is_published: true, 
    targeting: true 
    }, { 
    name: "Hello World #4", 
    is_published: false, 
    targeting: true 
    }]; 

Und jetzt soll ich in der Lage sein, Ergebnisse zu filtern (angezeigt ng-repeat verwenden) aus der folgenden wählen.

<select ng-model="filterByCriteria"> 
    <option ng-value="published">Published</option> 
    <option ng-value="published">Unpublished</option> 
    <option ng-value="targeting">Custom Targeting</option> 
    <option ng-value="public">Public</option> 
</select> 

Wie Sie sehen können, "Veröffentlicht/Unliblished" auf is_published Eigentum, und "Custom Targeting-/Public" auf targeting Immobilie.

Plnkr: http://plnkr.co/edit/Ej8qSGCUbts0RVVJspM1?p=preview

Antwort

3

Sie können etwas tun: Dieses neue Objekt hinzufügen

$scope.filterByCriteria = [{ 
    is_published: true 
}, { 
    is_published: false 
}, { 
    targeting: true 
}, { 
    targeting: false 
}]; 

Und im HTML

<body ng-app="myApp"> 
<div ng-controller="myController"> 
    <div> 
    Filter by: 
    <select ng-model="selectedCriteria"> 
     <option value="0">Published</option> 
     <option value="1">Unpublished</option> 
     <option value="2">Custom Targeting</option> 
     <option value="3">Public</option> 
    </select> 
    </div> 
    <ul> 
    <li ng-repeat="post in postList | filter: filterByCriteria[selectedCriteria]"> 
     {{post.name}} 
    </li> 
    </ul> 
</div> 

Here is an example

+0

Haben Sie es getestet? – developer033

+1

@ developer033 Ja und es funktioniert. – Titus

+0

Wahre, nette Lösung übrigens. Es kann nur ein Problem sein, wenn er dieses Objekt nicht erstellen kann (falls er nicht weiß, welche Eigenschaften das Array von Objekten enthält), wenn man bedenkt, dass es natürlich nur ein Beispiel war. – developer033