Estoy completando un menú desplegable mediante el uso de ng-options que está conectado a un controlador que a su vez está llamando a un servicio. Desafortunadamente, los datos que ingresan son un desastre y necesito poder ordenarlos alfabéticamente.
Te imaginas que algo así $.sortBy
lo haría, pero desafortunadamente no funcionó. Sé que puedo ordenarlo a través de JavaScript con un método auxiliar function asc(a,b)
o algo así, pero me niego a creer que no haya una forma más limpia de hacerlo, además, no quiero inflar el controlador con métodos auxiliares. Es algo tan básico en principio que no entiendo por qué AngularJS no tiene esto.
¿Hay alguna forma de hacer algo así $orderBy('asc')
?
Ejemplo:
<select ng-option="items in item.$orderBy('asc')"></select>
Sería extremadamente útil tener opciones orderBy
para que pueda hacer lo que quiera, siempre que generalmente intente ordenar los datos.
selected
. Para este ejemplo puedes hacer algo como$scope.selected = $scope.friends[0]
. Vea este violín para una muestra de trabajo.f.age as f.name for f in friends | orderBy:'name'
- aquí es un violín de trabajo. Más información sobre ng-options aquí .<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></selected>
. Poner eltrack by
filtro después del pedido no fue intuitivo y esta respuesta es el resultado de búsqueda superior de google.Deberías poder usar filter:
orderBy
orderBy
puede aceptar una tercera opción para lareverse
bandera.Aquí el artículo se ordena por propiedad 'nombre' en orden inverso. El segundo argumento puede ser cualquier función de orden, por lo que puede ordenar cualquier regla.
@ver http://docs.angularjs.org/api/ng.filter:orderBy
fuente
http://jsfiddle.net/Nfv42/65/
fuente
Para cualquiera que quiera ordenar la variable en la tercera capa:
puedes hacerlo asi
fuente