Preciso fazer ordenação de nomes por acento. Neste caso, desconsiderar os acentos, pois quando utilizo orderBy
, os nomes são colocados no fim da lista.
<div ng-repeat="enrollment in data.enrollments | orderBy: 'enrollment.student.name'">
<span>{{enrollment.student.name}}
</div>
Como faço para ordernar os nomes ?
1 curtida
Gabriela_Knolseisen:
ng-repeat
Deve fazer uma função sort
customizada:
Exemplo:
Html
<div ng-app="app" ng-controller="ctrl">
<div ng-repeat="n in listName | orderBy:'name':false:orderByName">
{{n.name}}
</div>
Angular (Javascript)
var app = angular
.module('app', [])
.controller('ctrl', function($scope){
$scope.listName = [
{'name': 'E'},
{'name': 'A'},
{'name': 'C'},
{'name': 'Á'},
{'name': 'D'},
{'name': 'W'},
{'name': 'Ê'},
{'name': 'À'},
{'name': 'F'},
{'name': 'Í'},
{'name': 'B'},
];
//-------------------------------------------------------------
// função de ordenação ----------------------------------------
$scope.orderByName = function(a,b) {
console.log(a);
console.log(b);
return a.value.localeCompare(b.value);
};
});
Exemplo Online: https://jsbin.com/capiboruvu/15/edit?html,js,output
A mágica acontece no localeCompare
dê uma lida: