Ich bin ein AngularJS-Neuling und ich baue eine kleine Proof-of-Concept-Mietwagen-App, die einige JSON einzieht und verschiedene Bits dieser Daten über eine ng ausgibt -repeat, mit ein paar Filter:AngularJS: Benutzerdefinierte Filter und ng-repeat
<article data-ng-repeat="result in results | filter:search" class="result">
<header><h3>{{result.carType.name}}, {{result.carDetails.doors}} door, £{{result.price.value}} - {{ result.company.name }}</h3></header>
<ul class="result-features">
<li>{{result.carDetails.hireDuration}} day hire</li>
<li data-ng-show="result.carDetails.airCon">Air conditioning</li>
<li data-ng-show="result.carDetails.unlimitedMileage">Unlimited Mileage</li>
<li data-ng-show="result.carDetails.theftProtection">Theft Protection</li>
</ul>
</article>
<h2>Filters</h2>
<h4>Doors:</h4>
<select data-ng-model="search.carDetails">
<option value="">All</option>
<option value="2">2</option>
<option value="4">4</option>
<option value="9">9</option>
</select>
<h4>Provider:</h4>
Atlas Choice <input type="checkbox" data-ng-model="search.company" ng-true-value="Atlas Choice" ng-false-value="" value="Atlas Choice" /><br>
Holiday Autos <input type="checkbox" data-ng-model="search.company" ng-true-value="Holiday Autos" ng-false-value="" value="Holiday Autos" /><br>
Avis <input type="checkbox" data-ng-model="search.company" ng-true-value="Avis" ng-false-value="" value="Avis" /><br>
Jetzt möchte ich einen benutzerdefinierten Filter in meinem Controller erstellen, die über die Einzelteile in meinem ng-repeat laufen kann und geben nur die Elemente, die bestimmte Kriterien erfüllen - für Beispiel: Ich könnte ein Array von Werten erstellen, anhand derer die Checkboxen "Anbieter" überprüft werden, und dann jedes Element mit wiederholter Ausführung dagegen evaluieren. Ich kann einfach nicht herausfinden, wie ich das machen würde, in Bezug auf die Syntax - kann mir jemand helfen?
Hier ist meine Plunker: http://plnkr.co/edit/lNJNYagMC2rszbSOF95k?p=preview
Dieses Beispiel sollte in der Dokumentation sein. –
Sehr interessant! Der Filter kann jedoch vereinfacht werden, um car.carDetails.doors> 2; 'zurückzugeben. – sp00m
Natürlich kann es. Ich habe mich jedoch für eine ausführlichere Version entschieden, um es als Lernbeispiel klarer zu machen. – mirrormx