Ordenação Angular

1 resposta
G

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 Resposta

D

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:

Criado 23 de julho de 2018
Ultima resposta 23 de jul. de 2018
Respostas 1
Participantes 2