angularjs - multiple - order by angular 4
AngularJS ngOptions sort array (2)
Como especifica la documentación, el argumento de cadena es para propiedades de objeto, no para primitivos. Creo que, por más elemental que parezca, tienes que crear una función en el ámbito que simplemente devuelva el argumento y pasarlo a orderBy
.
Ver jsFiddle !
He estado tratando de usar ng-options
para mostrar una matriz de fuentes en una selección ordenada alfabéticamente por el valor de los elementos en la matriz.
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'', ... ];
He intentado cambiar el valor en orderBy
y otras cosas. He leído toda la documentación y todos los comentarios.
¿Qué me estoy perdiendo? ¿Se supone que esto solo funciona en objetos?
Esto es lo que necesitas hacer:
<select ng-model="selected" ng-options="font for font in webfonts | orderBy:''toString()'' " name="fonts">
- Debe agregar ng-model para que el enlace funcione correctamente para una lista de cadenas.
- Puede usar
toString()
para ordenar si la entrada contiene una lista de cadenas. Dado que la expresión deorderBy
puede ser una función de Getter. El resultado de esta función se ordenará utilizando el operador <, =,>.