Ich habe eine Filterfunktion geschrieben, die Daten basierend auf dem Argument zurückgibt, das Sie übergeben. Ich möchte die gleiche Funktionalität in meinem Controller. Ist es möglich, die Filterfunktion in einer Steuerung wiederzuverwenden?
Folgendes habe ich bisher versucht:
function myCtrl($scope,filter1)
{
// i simply used the filter function name, it is not working.
}
angularjs
angular-filters
ng-controller
Sumanth
quelle
quelle
Antworten:
Injizieren Sie $ filter in Ihren Controller
Wo immer Sie diesen Filter verwenden möchten, verwenden Sie ihn einfach wie folgt:
Wenn Sie Argumente an diesen Filter übergeben möchten, verwenden Sie separate Klammern:
Wo
arg1
ist das Array, nach dem Sie filtern möchten, und wo wird gefiltertarg2
?quelle
var anyNumber = $filter('number')(12.222222, 2);
zu erhalten12.22
.$filter("currency")(price, "$", 2)
Wenn Sie also einen Preis = 200 hätten, würde dieser Ausdruck "200,00 $" zurückgeben.$filter('filtter1')
(2 t) verwenden. Wenn Sie jedochfiltter1Filter
Angular injizieren, wird sich sofort beschweren, dass die Abhängigkeit nicht besteht.Die Antwort von @Prashanth ist korrekt, aber es gibt noch einfachere Möglichkeiten, dasselbe zu tun. Anstatt die
$filter
Abhängigkeit zu injizieren und die umständliche Syntax zum Aufrufen von ($filter('filtername')(arg1,arg2);
) zu verwenden, kann die Abhängigkeit wie folgt eingefügt werden: Filtername plusFilter
Suffix.Ein Beispiel aus der Frage könnte man schreiben:
Es ist zu beachten, dass Sie
Filter
an denfooFilter
Filternamen anhängen müssen , unabhängig davon, welche Namenskonvention Sie verwenden: foo wird durch Aufrufen referenziert. FooFilter wird durch Aufrufen referenziert
fooFilterFilter
quelle
Mit dem folgenden Beispielcode können wir das Array im Winkelregler nach Namen filtern. Dies basiert auf der folgenden Beschreibung. http://docs.angularjs.org/guide/filter
this.filteredArray = filterFilter (this.array, {name: 'Igor'});
JS:
HTML
quelle
Hier ist ein weiteres Beispiel für die Verwendung
filter
in einem Angular-Controller:Einfach, hey?
quelle
Es gibt drei Möglichkeiten, dies zu tun.
Angenommen, Sie haben den folgenden einfachen Filter, der eine Zeichenfolge in Großbuchstaben konvertiert, mit einem Parameter nur für das erste Zeichen.
Direkt durch
$filter
Hinweis: Dadurch erhalten Sie Zugriff auf alle Ihre Filter.
Zuweisen
$filter
zu avariable
Mit dieser Option können Sie Folgendes verwenden:
$filter
afunction
.Laden Sie nur eine bestimmte
Filter
Sie können nur einen bestimmten Filter laden, indem Sie den Filternamen mit anhängen
Filter
.Welche Sie verwenden, hängt von Ihren persönlichen Vorlieben ab, aber ich empfehle die dritte, da dies die am besten lesbare Option ist.
quelle
quelle
Ich habe ein anderes Beispiel, das ich für meinen Prozess gemacht habe:
Ich bekomme ein Array mit einer solchen Wertbeschreibung
in meinen Filters.js:
Dann ein Test var (Controller):
quelle
Mit AngularJs können Sie Filter in Vorlagen oder in Controllern, Richtlinien usw. verwenden.
In der Vorlage können Sie diese Syntax verwenden
und innerhalb des Controllers können Sie den $ filter- Dienst injizieren
Wenn Sie mehr mit Demo-Beispiel benötigen, finden Sie hier einen Link
AngularJs Filterbeispiele und Demo
quelle
Es gibt eine andere Möglichkeit, Filter auszuwerten, die die Syntax aus den Ansichten widerspiegeln. Der Aufruf ist haarig, aber Sie können eine Verknüpfung dazu erstellen. Mir gefällt, dass die Syntax der Zeichenfolge mit der in einer Ansicht identisch ist. Sieht aus wie das:
quelle
Es scheint, dass niemand erwähnt hat, dass Sie eine Funktion als arg2 in $ filter ('filtername') (arg1, arg2) verwenden können;
Zum Beispiel:
quelle
Ein einfaches Datumsbeispiel mit $ filter in einem Controller wäre:
Wie hier erläutert - https://stackoverflow.com/a/20131782/262140
quelle
Verwenden Sie den folgenden Code, wenn Sie mehrere Bedingungen anstelle eines einzelnen Werts im Javascript-Winkelfilter hinzufügen möchten:
quelle
Fügen Sie zunächst $ filter in Ihren Controller ein und stellen Sie sicher, dass ngSanitize in Ihrer App geladen ist. Später wird der Controller wie folgt verwendet:
Schauen Sie sich immer die AngularJS-Dokumente an
quelle
Wenn Sie ein Objekt im Controller filtern möchten, versuchen Sie dies
Dies gibt ein gefiltertes Objekt gemäß der if-Bedingung zurück
quelle
Wiederverwenden eines Angular.js-Filters - Ansicht / Controller
Diese Lösung behandelt die Wiederverwendung von Winkelfiltern. Dies ist eine weitere Möglichkeit, Daten zu filtern, und Google hat mich hier gelandet, als ich solche benötigte. und ich teile gerne.
Anwendungsfall
Wenn Sie bereits filtern, z. B. in einer ng-Wiederholung in Ihrer Ansicht (wie unten), haben Sie möglicherweise einen Filter in der Steuerung wie folgt definiert. Und dann können Sie wie in den letzten Beispielen wiederverwenden.
Beispiel für die Verwendung von Filtern - Gefilterte Wiederholung in der Ansicht
Beispiel für die Definition eines Winkelfilters
Das Konzept hier ist also, dass Sie bereits einen Filter verwenden, der für Ihre Ansicht erstellt wurde, und dann erkennen, dass Sie ihn auch in Ihrem Controller verwenden möchten.
Filterfunktion Verwendung innerhalb des Controllers Beispiel 1
Verwendung der Filterfunktion innerhalb des Controllers Beispiel 2
Zeigen Sie eine Schaltfläche nur an, wenn mit dem vorherigen Filter keine Duplikate gefunden wurden.
HTML-Taste
Schaltfläche Ein- / Ausblenden
Einige mögen diese Version der Filterung als einfach empfinden, und es handelt sich um eine Angular.js-Option.
Der optionale Komparatorparameter "true", der in der Ansicht und im Funktionsaufruf $ filter verwendet wird, gibt an, dass Sie einen strengen Vergleich wünschen. Wenn Sie dies weglassen, können Sie über mehrere Spalten nach Werten suchen.
https://docs.angularjs.org/api/ng/filter/filter
quelle