Filtro angularjs en propiedad anidados
-
21-12-2019 - |
Pregunta
Tengo una matriz del siguiente objeto JSON:
{
fooBar:{
Id: 2
Foo: {
Id: 4
IsNew: false
}
Bar: {
Id: 1
IsNew: false
}
}
}
y quiero filtrar el fooBar.Foo.Id
, así que se basa en esta respuesta estaba esperando que lo siguiente funcione:
<div data-ng-repeat="fooBar in fooBars | filter:{Foo:{Id : 4}}:true">
Pero esto no me devuelve nada.
Puedo hacer lo siguiente, sin embargo, para filtrar en Foobar.ID y eso funciona bien:
<div data-ng-repeat="fooBar in fooBars | filter:{Id : 2}:true">
¿Debo escribir filtros personalizados para este tipo de un nivel de inmuebles infantiles que coinciden?¿O hay algo obvio que estoy haciendo mal?
Solución
Basado en esta respuesta , resolví el problema creando un filtro personalizado:
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;
};
}]);
y lo usó para filtrar la colección en el HTML:
<div data-ng-repeat="(key, fooBar) in fooBars | fooBarFilter : 4">
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow