Schauen Sie sich das Beispiel hier an: http://docs.angularjs.org/api/ng.filter:filter
Sie können nach einer der Telefoneigenschaften <input ng-model="search">
suchen, indem Sie verwenden , und Sie können nur nach dem Namen suchen, indem Sie verwenden. <input ng-model="search.name">
Die Ergebnisse werden entsprechend nach Namen gefiltert (wenn Sie eine Telefonnummer eingeben, werden erwartungsgemäß keine Ergebnisse zurückgegeben).
Lassen Sie uns sagen , dass ich ein Modell mit einem „Namen“ Eigenschaft haben, ein „Telefon“ Eigenschaft und ein „Geheimnis“ Eigenschaft, wie würde ich mich über das Filtern von sowohl der „Name“ und „Telefon“ Eigenschaften und nicht das „Geheimnis“ Eigenschaft ? Im Wesentlichen kann der Benutzer also einen Namen oder eine Telefonnummer eingeben und dieng-repeat
würde korrekt filtern, aber selbst wenn der Benutzer einen Wert eingibt, der einem Teil eines "geheimen" Werts entspricht, wird nichts zurückgegeben.
Vielen Dank.
ng-model
(search.name
in den INPUT-Feldern angegebenng-model
) dazu führen würde, dass die zu wiederholenden Objekte nach ihrername
Eigenschaft gefiltert werden . Das heißt, intuitiv für mich, sollten Sie in der Lage sein, spezifisch zu filtern, indem Sie einfachname
in Ihremng-repeat
Filterfilter: friend.name
angeben : anstatt "zu schreiben" <input ng-model = "search.name"> ...Antworten:
Hier ist der Plunker
Neuer Plunker mit sauberem Code und bei dem sowohl die Abfrage- als auch die Suchlistenelemente die Groß- und Kleinschreibung nicht berücksichtigen
Die Hauptidee besteht darin, eine Filterfunktion zu erstellen, um diesen Zweck zu erreichen.
Aus dem offiziellen Dokument
Aktualisieren
Einige Leute haben möglicherweise Bedenken hinsichtlich der Leistung in der realen Welt, was richtig ist.
In der realen Welt würden wir diesen Filter wahrscheinlich vom Controller aus ausführen.
Hier ist das Detail Post zeigt , wie es geht.
Kurz gesagt, wir fügen hinzu
ng-change
Eingaben zur Überwachung neuer Suchänderungen hinzuund dann Filterfunktion auslösen.
quelle
item.brand.indexOf($scope.query)!=-1 || item.model.indexOf($scope.query)!=-1)
Sie können ein Objekt als Parameter an Ihren Filterausdruck übergeben, wie in der API-Referenz beschrieben . Dieses Objekt kann die Eigenschaften, an denen Sie interessiert sind, selektiv anwenden, z.
Hier ist ein Plunker
Heads up ... dieses Beispiel funktioniert hervorragend mit AngularJS 1.1.5, aber nicht immer so gut in 1.0.7. In diesem Beispiel wird 1.0.7 mit allem herausgefiltert initialisiert und funktioniert dann, wenn Sie die Eingaben verwenden. Es verhält sich so, als ob die Eingaben nicht übereinstimmende Werte enthalten, obwohl sie leer beginnen. Wenn Sie auf stabilen Releases bleiben möchten, probieren Sie dies für Ihre Situation aus. In einigen Szenarien möchten Sie jedoch möglicherweise die Lösung von @ maxisam verwenden, bis 1.2.0 veröffentlicht wird.
quelle
Ich habe mich von der Antwort von @ maxisam inspiriert und meine eigene Sortierfunktion erstellt, und ich würde sie gerne teilen (weil mir langweilig ist).
Situation Ich möchte durch eine Reihe von Autos filtern. Die ausgewählten zu filternden Eigenschaften sind Name, Jahr, Preis und km. Der Immobilienpreis und km sind Zahlen (daher die Verwendung von
.toString
). Ich möchte auch für Großbuchstaben steuern (daher.toLowerCase
) . Außerdem möchte ich meine Filterabfrage in verschiedene Wörter aufteilen können (z. B. findet der Filter 2006 Acura Übereinstimmungen 2006 mit dem Jahr und Acura mit dem Namen).Funktion übergebe ich an Filter
quelle
Wenn Sie Bibliotheken von Drittanbietern verwenden möchten, können 'Angular Filters' mit einer schönen Sammlung von Filtern hilfreich sein:
https://github.com/a8m/angular-filter#filterby
quelle
Hoffe, diese Antwort wird helfen, Multiple Value Filter
Und Arbeitsbeispiel in dieser Geige
quelle
Hier gibt es eine Reihe guter Lösungen, aber ich würde vorschlagen, damit den anderen Weg zu gehen. Wenn die Suche das Wichtigste ist und die "geheime" Eigenschaft in der Ansicht überhaupt nicht verwendet wird; Mein Ansatz hierfür wäre, den eingebauten Winkelfilter mit all seinen Vorteilen zu verwenden und das Modell einfach einem neuen Array von Objekten zuzuordnen.
Beispiel aus der Frage:
Verwenden Sie jetzt in HTML einfach den regulären Filter, um diese beiden Eigenschaften zu durchsuchen.
quelle
Ziemlich einfacher Ansatz mit filterBy in eckigen Js
Für die Arbeit plnkr folgen Sie diesem Link
http://plnkr.co/edit/US6xE4h0gD5CEYV0aMDf?p=preview
Dies hat speziell eine einzelne Eigenschaft verwendet, um nach mehreren Spalten zu suchen, aber nicht nach allen.
Regler
quelle
Ich habe das einfach gelöst:
quelle
http://plnkr.co/edit/A2IG03FLYnEYMpZ5RxEm?p=preview
Hier ist eine Suche mit Groß- und Kleinschreibung, bei der Ihre Suche auch in Wörter unterteilt wird, die auch in jedem Modell gesucht werden sollen. Erst wenn ein Leerzeichen gefunden wird, wird versucht, die Abfrage in ein Array aufzuteilen und dann jedes Wort zu durchsuchen.
Es gibt true zurück, wenn jedes Wort mindestens in einem der Modelle enthalten ist.
quelle
Filter kann ein JavaScript-Objekt mit Feldern sein und Sie können folgenden Ausdruck haben:
quelle
Ich mag es einfach zu halten, wenn es möglich ist. Ich musste nach International gruppieren, nach allen Spalten filtern, die Anzahl für jede Gruppe anzeigen und die Gruppe ausblenden, wenn keine Elemente vorhanden waren.
Außerdem wollte ich keinen benutzerdefinierten Filter nur für so etwas Einfaches hinzufügen.
quelle
Ich bin vielleicht sehr spät dran, aber das habe ich letztendlich getan. Ich habe einen sehr allgemeinen Filter gemacht.
Dann benutze es so
Ihr Suchfeld ist wie
Dabei sind Name und Geräte-ID Eigenschaften in DVDs
quelle
Hier ist eine einfache Lösung für diejenigen, die einen schnellen Filter für ein Objekt wünschen:
Mit dem Array-Filter können Sie das Objekt nachahmen, das Sie filtern möchten. Im obigen Fall würden die folgenden Klassen gut funktionieren:
Und wo das Deck aussehen könnte:
Wenn Sie mehrere Eigenschaften des Objekts filtern möchten, trennen Sie die Feldnamen einfach durch ein Komma:
BEARBEITEN: Hier ist ein funktionierendes plnkr, das ein Beispiel für einzelne und mehrere Eigenschaftsfilter bietet:
http://embed.plnkr.co/i0wCx6l1WPYljk57SXzV/
quelle
ng-repeat
. Ihr Beispiel scheint jedoch etwas kompliziert zu sein: Gibt es eine Möglichkeit, es zu reduzieren? Ich weiß, dass die Frage im Wesentlichen nach einem einzelnen Suchfeld sucht, das nur nach ausgewählten Eigenschaften filtern kann. In Ihrem Beispiel wird anscheinend entweder nach Nennwertnamen oder nach Zahlen gefiltert, aber nicht nach beiden. Wenn ich Ihr Beispiel nicht richtig verstehe, lassen Sie es mich bitte wissen!