Question

J'ai un tableau de l'objet json suivant :

 { 
    fooBar:{ 
        Id: 2
        Foo:  { 
                Id: 4
                IsNew: false
              } 
         Bar: { 
                Id: 1
                IsNew: false
              }
           }
  }

et je veux filtrer sur le fooBar.Foo.Id, donc basé sur cette réponse Je m'attendais à ce que ce qui suit fonctionne :

<div data-ng-repeat="fooBar in fooBars | filter:{Foo:{Id : 4}}:true">

Mais cela ne me rapporte rien.

Je peux cependant faire ce qui suit pour filtrer sur fooBar.Id et cela fonctionne très bien :

<div data-ng-repeat="fooBar in fooBars | filter:{Id : 2}:true">

Dois-je écrire des filtres personnalisés pour ce type de correspondance de propriétés enfants d'un niveau inférieur ?Ou y a-t-il quelque chose d'évident que je fais mal ?

Était-ce utile?

La solution

Basé sur cette réponse, j'ai résolu le problème en créant un filtre personnalisé :

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;
 };
}]);

et je l'ai utilisé pour filtrer la collection dans le HTML :

 <div data-ng-repeat="(key, fooBar) in fooBars | fooBarFilter : 4">
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top