Wie mache ich das, wenn ich ein Array von Objekten habe und das Angular-Modell an eine Eigenschaft eines der Elemente binden möchte, die auf einem Filter basieren? Ich kann es anhand eines konkreten Beispiels besser erklären:
HTML:
<!DOCTYPE html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body ng-controller="MyCtrl">
<input ng-model="results.year">
<input ng-model="results.subjects.title | filter:{grade:'C'}">
</body>
</html>
Regler:
function MyCtrl($scope) {
$scope.results = {
year:2013,
subjects:[
{title:'English',grade:'A'},
{title:'Maths',grade:'A'},
{title:'Science',grade:'B'},
{title:'Geography',grade:'C'}
]
};
}
JSBin: http://jsbin.com/adisax/1/edit
Ich möchte die zweite Eingabe für das Thema mit der Note 'C' filtern, aber ich möchte das Modell nicht an die Note binden . Ich möchte es an den Titel des Fachs mit der Note "C" binden .
Ist das möglich und wenn ja, wie wird es gemacht?
filter:{grade:'!'+'C'}
grade array
? In meinem Fall erstelle ich mein Notenarray aus einer Baumansicht und möchte das Ergebnis nach denen im Array filtern.Sie können den Filter "Filter" in Ihrem Controller verwenden, um alle Noten "C" zu erhalten. Wenn Sie das erste Element des Ergebnisarrays abrufen, erhalten Sie den Titel des Fachs mit der Note "C".
http://jsbin.com/ewitun/1/edit
Das gleiche gilt für einfaches ES6:
quelle
Hier ist ein modifizierter JSBin mit einem Arbeitsbeispiel:
http://jsbin.com/sezamuja/1/edit
Folgendes habe ich mit Filtern in der Eingabe gemacht:
quelle
Bitte beachten Sie, wenn Sie $ filter wie folgt verwenden:
und du hattest zufällig eine andere Note für Oh, ich weiß nicht, CC oder AC oder C + oder CCC, in die sie hineingezogen werden. Sie müssen eine Anforderung für eine genaue Übereinstimmung anhängen:
Das hat mich wirklich umgebracht, als ich einige Provisionsdetails wie diese eingeholt habe:
Lassen Sie sich nur wegen eines Fehlers anrufen, weil die Provisions-ID 56 statt 6 eingegeben wurde.
Durch Hinzufügen der wahren Kräfte wird eine exakte Übereinstimmung erzielt.
Trotzdem bevorzuge ich dies (ich verwende Typoskript, daher das "Let" und =>):
Ich mache das, weil ich irgendwann auf der Straße vielleicht mehr Informationen über diese gefilterten Daten usw. erhalten möchte. Wenn die Funktion genau dort drin ist, bleibt die Motorhaube offen.
quelle
Wenn Sie eine separate Ergebnisliste im Controller erstellen möchten, können Sie einen Filter anwenden
Dann können Sie verweisen failedSubjects auf die gleiche Weise die Referenz würde Ergebnisse Objekt
Sie können hier mehr darüber lesen https://docs.angularjs.org/guide/filter
Da diese Antwort eckig die Dokumentation aktualisiert hat, empfehlen sie nun, den Filter aufzurufen
quelle
Sie können Funktionen auch verwenden mit :
$filter('filter')
quelle
Wenn Sie ES6 verwenden, können Sie:
Beachten Sie auch, dass der Filter das vorhandene Array nicht aktualisiert und jedes Mal ein neues gefiltertes Array zurückgibt.
quelle
Anwenden des gleichen Filters in HTML mit mehreren Spalten, nur Beispiel:
quelle