Hier wird die Idee von meinem Problem:AngularJS filtern mehrere Wörter aus einer Zeichenkette in einem einzigen Feld
Stellen Sie sich vor, ich habe einen Benutzer für ein Buch suchen.
Als Eingabe kann er versuchen, das Buch mit Buchtitel zu finden.
nehmen Lassen Sie sich:
$scope.books = ["Heir Of Earth",
"Woman Of The Solstice",
"Hunters Of Next Year",
"Pilots Without Honor",
"Slaves And A Woman",
"Kings And Heroes",
"Decay Of The End",
"Fortune Of The Land",
"Rejecting My Dreams",
"Painting The Angels"];
Jetzt nehme ich die Benutzerabfrage in einem String:
Beispiel:
$scope.userQueryTitle = "Woman Of";
Ich möchte alle Bücher bekommen, was, wo ihr Titel enthält "Frau" oder "Of" aber NICHT "Woman" UND "Of".
Von dort das entsprechende Ergebnis dieser sein sollte:
$scope.booksResult = ["Heir Of Earth",
"Woman Of The Solstice",
"Hunters Of Next Year",
"Slaves And A Woman",
"Decay Of The End",
"Fortune Of The Land"
];
ich einige Teillösungen für mein Problem gefunden, wie die Verwendung so etwas wie:
Ausblick:
<ul ng-repeat="book in booksResult | filter: getBooksFromTitle">
<li>{{book}}</li>
</ul>
Controller:
$scope.getBooksFromTitle = function(book){
return book.match(($scope.userQueryTitle).split(" ")[0]) ||
book.match(($scope.userQueryTitle).split(" ")[1]);
};
nur
Es funktioniert, wenn $scope.userQueryTitle
enthält nur zwei Worte, sondern mein Problem ist was ist, wenn ich oder oder n (e) haben?
getBooksFromTitle()
sollte über diese flexibel sein, aber ich sehe nicht, wie zu behandeln ...
Jeder Vorschlag?
Danke!
Sie können versuchen, den folgenden Ansatz ... In Ihrer Methode GetBooksFromTitle können Sie $ scope.userQueryTitle in ein Array konvertieren und Vergleich von zwei Arrays. –