Mehrere Werte in AngularJS filtern
AngularJS bietet einen leistungsstarken Filtermechanismus zur Verfeinerung der in Ihren Vorlagen angezeigten Daten. Das Filtern nach mehreren Werten mithilfe von || Der Bediener kann bei der Arbeit mit dynamischen Filtern umständlich und unflexibel werden. In diesem Artikel wird eine elegantere Lösung mit benutzerdefinierten Filtern untersucht.
Benutzerdefinierte Filter für die Filterung mehrerer Werte
Anstatt den Filterausdruck dynamisch zu manipulieren, erstellen Sie einen benutzerdefinierten Filter, der dies handhabt Logik. Mit benutzerdefinierten Filtern können Sie Ihre eigenen Filterfunktionen definieren. Hier ist ein Beispiel:
<code class="javascript">angular.module('myFilters', []). filter('bygenre', function() { return function(movies, genres) { const matches = []; // Apply filtering logic here return matches; } });</code>
Der Filter „bygenre“ benötigt zwei Parameter: „Filme“, das Array der zu filternden Objekte, und „Genres“, das Array der Genres, nach denen gefiltert werden soll. Die Funktion durchläuft das Array „Filme“, prüft, ob das Genre jedes Films mit einem Genre im Array „Genres“ übereinstimmt, und fügt Übereinstimmungen zum Array „Matches“ hinzu. Schließlich wird das Übereinstimmungs-Array als gefiltertes Ergebnis zurückgegeben.
Anwenden des Filters
Verwenden Sie in Ihrer Vorlage die ng-repeat-Direktive mit dem | bygenre-Pipe zum Anwenden des Filters:
<code class="html"><ul> <li ng-repeat="movie in movies | bygenre:genrefilters" >{{movie.title}}: {{movie.genre}} </li> </ul></code>
Dynamische Filterwerte
Im obigen HTML-Code ist genrefilters ein Objekt, das die Genres angibt, nach denen gefiltert werden soll. Sie können dieses Objekt in Ihrem Controller dynamisch aktualisieren, um eine dynamische Filterung zu erreichen. Der folgende Code verwendet beispielsweise Kontrollkästchen, um das Genrefilters-Objekt festzulegen:
<code class="html"><input type="checkbox" ng-model="genrefilters.action" /> Action <br> <input type="checkbox" ng-model="genrefilters.family" /> Family</code>
Wenn die Kontrollkästchen umgeschaltet werden, wird das Genrefilters-Objekt aktualisiert und der ByGenre-Filter wendet automatisch die neuen Filterkriterien an.
Dieser Ansatz bietet eine saubere und flexible Möglichkeit, Daten basierend auf mehreren Werten in AngularJS zu filtern, wodurch er sich besonders für Szenarien eignet, in denen sich die Filterkriterien ändern können.
Das obige ist der detaillierte Inhalt vonWie kann ich Daten basierend auf mehreren Werten in AngularJS effizient filtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!