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?

È stato utile?

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