2017-01-18 5 views
2

Ich habe ein Eins-zu-viele-Modell verwandter Sammlungen in mongodb, in dem ein Dokument in der Kindsammlung die ID eines Dokuments in der übergeordneten Sammlung enthält. Ich versuche, alle Kinder anzuzeigen, wenn ich den Elternteil betrachte.Wie zeige ich eine Liste von Objekten basierend auf einer bestimmten Eigenschaft in Angularjs an?

Beim Anzeigen des übergeordneten Elements habe ich eine ng-Wiederholung, die die gesamte untergeordnete Sammlung anzeigt. Ich habe Probleme mit der Filterung der untergeordneten Sammlung, sodass nur Ergebnisse angezeigt werden, die die übergeordnete ID enthalten.

Hier ist mein HTML:

<div>{{parent.name}}</div> 
<div ng-repeat="child in children | filter: {id: {{parent.id}}}"> 
    {{child.name}} 
</div> 

Hier ist mein js:

app.controller("parentCtrl", function($scope, $location, $routeParams, $http) { 
    //Get parent 
    $scope.children = []; 
    $http.get('/children').success(function(children) { 
     $scope.loaded = true; 
     $scope.children = children; 
    }); 
}); 

Der Code wird erfolgreich die Eltern und lädt alle Dokumente in der Kinderkollektion. Kann ich einen Filter in meiner ng-Wiederholung verwenden, um nur die Kinder zu ziehen? Falls nicht, gibt es eine Best Practice, um Dokumente aus einer verwandten Sammlung zu erhalten?

Antwort

1

parent.id sollte nicht mit Interpolation ({{}}) umbrechen, da es einen Ausdruck benötigt, der gegen Geltungsbereich bewertet.

ng-repeat="child in children | filter: {id: parent.id }" 
0

Sie können diesen Code verwenden:

<div>{{parent.name}}</div> 
<div ng-repeat="(k, child) in children | filter: {id: parent.id}" 
    {{child.name}} 
</div> 
Verwandte Themen