Olá, pessoal!
No artigo de hoje vamos ver como usar o recurso de filter do AngularJS. A ideia é que quando o usuário digite um caractere válido a algum dado dentro do filter, este seja retornado. Vou mostrar dois exemplos, um retornando por idade e outro pelo nome.
Vamos usar o ng-repeat e o atributo filter. O código é tão simples que nem parece verdade. Considerando que você já tenha a estrutura do AngularJS, então vou ignorar todo o setup básico. Para o artigo estou usando o recurso de rotas simplesmente para facilitar (além do fato de ser bacana), mas não é requerido que seu projeto esteja usando rotas.
Criando o controller
Eu tenho um arquivo de controller.js e nele tem todos os controllers. Claro que fiz isso para facilitar nos exemplos da série. Em um projeto o ideal é termos isso separado e não colocar todos os controllers em um único arquivo.
var filterController = function($scope) { $scope.friends = [ { name : "Camilo", age : 20 }, { name : "Lopes", age : 55 }, { name : "Madruga", age : 60 }, { name : "Ana", age : 30 } ]; };
Não tem nada demais, apenas um array com informações de alguns amigos.
Criando HTML
Vamos criar o HTML, pois é onde está a magia. Chamei o meu de filterorder.html. A seguir, o conteúdo:
<!-- by age only--> <div> <label>Search by age</label> <input ng-model="ageValue" /> <ul ng-repeat="friend in friends | filter:{name:query,age:ageValue}|orderBy:'name'"> <li>{{friend.name}} ({{friend.age}})</li> </ul> </div> <!-- by name only--> <div> <label>Search by name</label> <input ng-model="nameValue" /> <ul ng-repeat="friend in friends | filter:{name:query,name:nameValue}|orderBy:'name'"> <li>{{friend.name}} ({{friend.age}})</li> </ul> </div> <!-- by age and name --> <div> <label>Search by age and name</label> <input ng-model="query" /> <ul ng-repeat="friend in friends | filter:query|orderBy:'name'"> <li>{{friend.name}} ({{friend.age}})</li> </ul> </div>
Testando
Vamos ver o resultado válido:
Observe que não digitei nada, portanto foi exibido todo o meu array.
Observe o resultado acima. Busquei pela idade, em seguida informei o nome e por último apenas digitei parcial e o AngularJS já me retornou.
Agora vamos ver o lado inválido:
Nem preciso falar, né? Realmente muito simples a implementação, e o resultado é fantástico.
Vou ficando por aqui e espero que tenham gostado do artigo.
Abraços!