Estou preenchendo uma lista suspensa através do uso de ng-options, que está ligado a um controlador que, por sua vez, está chamando um serviço. Infelizmente, os dados que entram são uma bagunça e eu preciso ser capaz de classificá-los em ordem alfabética.
Você $.sortBy
acha que algo assim faria isso, mas infelizmente não deu certo. Eu sei que posso classificá-lo via javascript com um método auxiliar function asc(a,b)
ou algo parecido, mas me recuso a acreditar que não há uma maneira mais limpa de fazer isso e não quero inchar o controlador com métodos auxiliares. É algo tão básico em princípio, então não entendo por que o AngularJS não tem isso.
Existe uma maneira de fazer algo assim $orderBy('asc')
?
Exemplo:
<select ng-option="items in item.$orderBy('asc')"></select>
Seria extremamente útil ter opções orderBy
para que você possa fazer o que quiser, sempre que tentar classificar dados.
selected
. Neste exemplo, você pode fazer algo parecido$scope.selected = $scope.friends[0]
. Veja este violino para uma amostra de trabalho.f.age as f.name for f in friends | orderBy:'name'
- aqui está um violino de trabalho. Mais sobre as opções de ng aqui .<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></selected>
. Colocar otrack by
filtro após o pedido não foi intuitivo e esta resposta é o principal resultado de pesquisa do Google.Você deve poder usar o filtro:
orderBy
orderBy
pode aceitar uma terceira opção para areverse
bandeira.Aqui, o item é classificado pela propriedade 'name' em uma ordem reversa. O segundo argumento pode ser qualquer função de ordem, para que você possa classificar qualquer regra.
@see http://docs.angularjs.org/api/ng.filter:orderBy
fonte
http://jsfiddle.net/Nfv42/65/
fonte
Para quem deseja classificar a variável na terceira camada:
você pode fazer assim
fonte