32 votes

Valeur de l'élément du tableau orderBy dans Angular ng-repeat

Comment puis-je obtenir l'adresse d'Angular ng-repeat pour trier une liste par la valeur réelle de chaque élément, plutôt que par la valeur d'une propriété de chaque élément ?

eg :

<ul>
    <li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>

Voici un violon pour jouer avec : http://jsbin.com/okatur/1/edit

Je réalise que je pourrais juste faire .sort() sur le tableau, mais est-ce ma seule option ?

49voto

Blackhole Points 5601

Depuis la version 1.3.0-rc.5

Desde AngularJS 1.3.0-rc.5 le orderBy (voir le documentation ) triera automatiquement le tableau en utilisant ses éléments si aucun paramètre supplémentaire n'est fourni.

<li ng-repeat="item in items | orderBy">{{item}}</li>

<a href="http://jsbin.com/okatur/59/edit">JS Bin</a>

Avant 1.3.0-rc.5

El orderBy (voir le la documentation historique ) peut également prendre une fonction comme second paramètre, dont la valeur de retour sera comparée à l'aide de la fonction < , = y > opérateur. Vous pouvez simplement utiliser l'opérateur angular.identity (voir le documentation ) à cette fin :

$scope.identity = angular.identity;

<li ng-repeat="item in items | orderBy:identity">{{item}}</li>

<a href="http://jsbin.com/okatur/6/edit">JS Bin</a>

5voto

Rahul Jujarey Points 126

Vous pouvez essayer ce qui suit.

<ul>
    <li ng-repeat="item in items | orderBy:'toString()'">{{item}}</li>
</ul>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X