Ich benutze die eckige advanced search box und ich möchte einen benutzerdefinierten Filter in meiner eckigen Seite implementieren, aber ich habe Probleme herauszufinden, wie man eine Reihe von Anforderungen in einer Abfrage zu behandeln. Lassen Sie uns sagen, dass ich mehrere Objekte, die das folgende Format folgen:Angular Implementieren Multi-Suchfilter
{
"displayName":"John",
"gender":"male",
"type":"customer",
"items": 3,
}
Ich möchte der Lage sein, in einfachem Englisch `Wer zu suchen, dessen Name John ist und ist vom Typ Kunde“ Hier ist meine Winkelsuchcode so. weit:
app.filter('infoFilter', function() {
return function(data, query) {
var output = [];
var index;
//loop over the original array
angular.forEach(data, function(row, index) {
angular.forEach(query, function(input, value) {
if(input) {
if(angular.isNumber(row[value]) && row[value] == input) {
output.push(row);
} else if(!angular.isNumber(row[value]) && row[value].toLowerCase().indexOf(input.toLowerCase()) > -1) {
output.push(row);
}
}
});
});
if(query) {
return data;
} else {
return output;
}
}
});
Die Abfrage kommt als ein Objekt, das wie folgt aussieht:.
{
"displayName":"John"
}
diese völlig in Ordnung für 1 Suchparameter funktioniert Also, wenn ich fürgesuchtMeine Tabelle wird aktualisiert, um alle Einträge mit dem Namen John anzuzeigen. Dies würde jedoch für Multi-Search-Parameter nicht wirklich funktionieren. Also, wenn die Abfrage sah wie folgt aus:
{
"displayName":"John",
"gender":"Female"
}
Ich brauche sofort alle Parameter anzuwenden, bevor ich output.push(row)
tun. Wie genau würde ich das machen?
diese mehrere Parameter sollten in welcher Weise UND/ODER Bedingung funktionieren ..? Der einzelne Datensatz sollte mit beiden Abfragen übereinstimmen, oder jeder Datensatz enthält einen dieser Datensätze. –