Dies sind einige Beispiel-JSON-Daten.
%Vor%Und das ist, wie ich auf Webseite rendere.
%Vor%Auf der Seite befindet sich ein Suchfeld. Wenn der Benutzer beginnt, in das Textfeld "serach" einzutippen, weist er FilterExpr wie folgt einen Wert zu.
%Vor%Wenn der Benutzer Amul oder Käse oder Butter verwendet, kann er die Produkte filtern. Problem ist, wenn Benutzer amul Quark oder Quark Amul oder Butter Britannia, KEINE Produkte auf der Seite angezeigt werden.
Wie funktioniert es? Welche Änderung muss ich machen, damit es mehrere Wörter filtern kann.
Der Standardwert comparator
, der vom Standard filter
verwendet wird, ist sehr einfach. Es sucht nach der exakt gesuchten Zeichenfolge und analysiert die Suchzeichenfolge in keiner Weise.
Der einfachste Weg, dies zu verbessern, ist die Implementierung eines weiteren comparator
( Dokuments ).
und Hinzufügen eines comparator
zum $scope
:
Alles, was übrig bleibt, ist die oben beschriebene bevorzugte Suchmethode:)
Sie können dies mit einem benutzerdefinierten Filter tun. Um einen benutzerdefinierten Filter zu erstellen, registrieren Sie eine neue Filter-Factory-Funktion mit Ihrem Modul und geben einen Namen ein (ich habe ihn "multiFilter" genannt). Diese Factory-Funktion gibt eine Filterfunktion zurück, die automatisch die Eingabe (wie das Array von Ihrer ng-Wiederholung) als ihren ersten Wert erhält. Die nachfolgenden Werte, die an die Filterfunktion übergeben werden, sind diejenigen, die Sie in Ihrer Filtermarkierung angeben.
Damit unser Filter schön und wiederverwendbar wird, wird er zwei zusätzliche Werte akzeptieren. Der erste ist der Objektschlüssel, den wir suchen wollen, und der zweite ist der Suchstring. In Ihrem HTML würden Sie diesen Filter als | multiFilter: ['SubCategoryName', 'BrandName'] : SearchText
angeben.
Dann müssen Sie Ihren benutzerdefinierten Filter hinzufügen:
%Vor%So funktioniert es:
angular.isDefined()
. Überprüfen Sie das Snippet unten, um die Aktion zu sehen:
Tags und Links javascript angularjs