Je remplis une liste déroulante via l'utilisation de ng-options qui est accroché à un contrôleur qui à son tour appelle un service. Malheureusement, les données qui arrivent sont en désordre et je dois être en mesure de les trier par ordre alphabétique.
Vous pensez que quelque chose comme le $.sortBy
ferait, mais malheureusement, il n'a pas fait jack. Je sais que je peux le trier via javascript avec une méthode d'aide function asc(a,b)
ou quelque chose comme ça, mais je refuse de croire qu'il n'y a pas de moyen plus propre de faire cela et je ne veux pas gonfler le contrôleur avec des méthodes d'assistance. C'est quelque chose de si basique en principe, donc je ne comprends pas pourquoi AngularJS ne l'a pas.
Y a-t-il un moyen de faire quelque chose comme $orderBy('asc')
?
Exemple:
<select ng-option="items in item.$orderBy('asc')"></select>
Il serait extrêmement utile d'avoir des options pour orderBy
que vous puissiez faire ce que vous voulez, chaque fois que vous essayez habituellement de trier les données.
selected
. Pour cet exemple, vous pouvez faire quelque chose comme$scope.selected = $scope.friends[0]
. Voir ce violon pour un exemple de travail.f.age as f.name for f in friends | orderBy:'name'
- voici un violon fonctionnel. Plus d'informations sur les ng-options ici .<select ng-model="selected" ng-options="f.name for f in friends | orderBy:'name' track by f.id"></selected>
. Mettretrack by
après le filtre de commande n'était pas intuitif et cette réponse est le meilleur résultat de recherche de Google.Vous devriez pouvoir utiliser le filtre:
orderBy
orderBy
peut accepter une troisième option pour lereverse
drapeau.Ici, l'élément est trié par propriété «nom» dans un ordre inversé. Le 2ème argument peut être n'importe quelle fonction d'ordre, vous pouvez donc trier n'importe quelle règle.
@see http://docs.angularjs.org/api/ng.filter:orderBy
la source
http://jsfiddle.net/Nfv42/65/
la source
Pour tous ceux qui souhaitent trier la variable dans la troisième couche:
tu peux le faire comme ça
la source