Ich habe einen Filter, der auf ng-repeat
ist und Strings aller Objekte (einschließlich geschachtelte) mit einer Suchzeichenfolge vergleicht. Wenn die Suchzeichenfolge in dem Objekt gefunden wird, wird True zurückgegeben.Filter für verschachtelte Objekte, um alle untergeordneten Elemente zurückzugeben
Ich bin auf der Suche nach einer Möglichkeit, diese Funktionalität zu erweitern, so dass wenn der Suchstring mit einer Zeichenfolge im Objekt übereinstimmt, der Filter True für das Objekt zurückgibt und True für alle verschachtelten Objekte in dem übereinstimmenden Objekt zurückgibt (Dies ist eine Baumansicht, ich suche nach einem Knoten und möchte alle untergeordneten Knoten anzeigen, wenn sie übereinstimmen).
Wie würde ich das tun?
Mein Filter sieht wie folgt aus:
.filter('deepFilter', function ($filter) {
return function(text) {
return function (value) {
if(text && text.length > 0) {
var searchTerm = text;
if (angular.isObject(value)) {
var found = false;
angular.forEach(value, function(v) {
found = found || $filter('deepFilter')(searchTerm)(v);
});
return found;
} else if (angular.isString(value)) {
if (value.indexOf(searchTerm) !== -1) {
return true;
} else {
return false;
}
}
} else {
return true;
}
};
};
});