498 Stimmen

Ng-repeat: filtern nach einem einzelnen Feld

Ich habe ein Array von Produkten, das ich mit ng-repeat wiederhole, und benutze

um diese Produkte nach Farbe zu filtern. Der Filter funktioniert, aber wenn der Produktname / die Beschreibung usw. die Farbe enthält, bleibt das Produkt nach Anwendung des Filters bestehen.

Wie kann ich den Filter so einstellen, dass er nur auf das Farbfeld meines Arrays angewendet wird, anstatt auf jedes Feld?

589voto

bmleite Punkte 26790

Geben Sie die Eigenschaft (z.B. colour) an, auf die der Filter angewendet werden soll:

488voto

Mark Rajcok Punkte 356006

Siehe das Beispiel auf der Filter-Seite. Verwenden Sie ein Objekt und setzen Sie die Farbe in der Farbeigenschaft:

Suche nach Farbe:

177voto

Ben Lesh Punkte 106494

Sie können nach einem Objekt filtern, dessen Eigenschaften mit den Objekten übereinstimmen, die Sie filtern müssen:

app.controller('FooCtrl', function($scope) {
   $scope.products = [
       { id: 1, name: 'test', color: 'red' },
       { id: 2, name: 'bob', color: 'blue' }
       /*... etc... */
   ];
});

Dies kann natürlich wie von Mark Rajcok vorgeschlagen durch eine Variable übergeben werden.

108voto

David Hansen Punkte 2481

Wenn Sie nach einem Enkelkind (oder tiefer) des angegebenen Objekts filtern möchten, können Sie Ihre Objekthierarchie weiter aufbauen. Wenn Sie beispielsweise nach 'thing.properties.title' filtern möchten, können Sie folgendes tun:

Sie können auch nach mehreren Eigenschaften eines Objekts filtern, indem Sie sie einfach zu Ihrem Filterobjekt hinzufügen:

107voto

Khader M A Punkte 4853

Die beste Möglichkeit, dies zu tun, ist die Verwendung einer Funktion:

html

javascript

$scope.myFilter = function (item) { 
    return item === 'red' || item === 'blue'; 
};

Alternativ können Sie ngHide oder ngShow verwenden, um Elemente basierend auf bestimmten Kriterien dynamisch anzuzeigen oder auszublenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X