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?

¿Fue útil?

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
scroll top