Ordenação Angular

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

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: