Filtro AngularJS sulla proprietà nidificata
-
21-12-2019 - |
Domanda
Ho una matrice del seguente oggetto JSON:
{
fooBar:{
Id: 2
Foo: {
Id: 4
IsNew: false
}
Bar: {
Id: 1
IsNew: false
}
}
}
.
e voglio filtrare sul fooBar.Foo.Id
, così basato su Questa risposta mi aspettavo quanto segue: .
<div data-ng-repeat="fooBar in fooBars | filter:{Foo:{Id : 4}}:true">
.
Ma questo non mi restituisce nulla.
Posso fare quanto segue per filtrare su foobar.id e che funziona bene:
<div data-ng-repeat="fooBar in fooBars | filter:{Id : 2}:true">
.
Dovrei scrivere filtri personalizzati per questo tipo di corrispondenza di una partita di proprietà per bambini di un livello?O c'è qualcosa di ovvio che sto facendo male?
Soluzione
Basato su Questa risposta , ho risolto il problema creando un filtro personalizzato:
app.filter('fooBarFilter', [function () {
return function (foobars, fooId) {
var result = {};
angular.forEach(foobars, function (foobar, key) {
if (foobar.foo.Id === fooId) {
result[key] = foobar;
}
});
return result;
};
}]);
.
e ha usato per filtrare la raccolta nell'HTML:
<div data-ng-repeat="(key, fooBar) in fooBars | fooBarFilter : 4">
. Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow