J'ai essayé d'utiliser ng-options
pour afficher un tableau de polices dans une sélection triées alphabétiquement selon la valeur des éléments du tableau.
[~ # ~] html [~ # ~]
<select ng-options="font for font in webfonts | orderBy:'font'" name="fonts">
<option value="">Choose a font</option>
</select>
[~ # ~] js [~ # ~]
$scope.webfonts = [
'Abel', 'Crafty Girls' , 'Lato' , 'Average',
'Corben', 'Quicksand', ... ];
J'ai essayé de changer la valeur dans orderBy
et d'autres choses. J'ai lu le documentation et tous les commentaires.
Qu'est-ce que je rate? Est-ce censé fonctionner uniquement sur des objets?
Voici ce que vous devez faire:
<select ng-model="selected" ng-options="font for font in webfonts | orderBy:'toString()' " name="fonts">
toString()
pour trier si l'entrée contient une liste de chaînes. Puisque l'expression de orderBy
peut être une fonction Getter. Le résultat de cette fonction sera trié à l'aide de l'opérateur <, =,>.Comme la documentation le spécifie, l'argument chaîne est pour les propriétés des objets, pas pour les primitives. Je pense que, aussi élémentaire que cela puisse paraître, vous devez créer une fonction sur la portée qui renvoie simplement l'argument et le transmettre à orderBy
.
Voir jsFiddle !