Diretiva ng-repeat

A diretiva ng-repeat é utilizada para repetir uma parte da view (template) conforme uma expressão de repetição baseada no model. O exemplo a seguir demonstra a utilização desta diretiva.

O arquivo index.html:

{%raw%} <!DOCTYPE html> <html lang="pt-br" ng-app="appsimples"> <head> <meta charset="utf-8" /> <title>App Simples</title> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" /> <link rel="stylesheet" href="style.css" /> <script>document.write('<base href="' + document.location + '" />');</script> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> <script src="app.js"></script> </head> <body ng-controller="HomeController"> <div class="container"> <h1>Cidades do Tocantins</h1> <p>A lista abaixo apresenta algumas cidades do Tocantins:</p> <ul> <li ng-repeat="cidade in cidades">{{cidade}}</li> </ul> </div> </body> </html> {%endraw%}

O arquivo app.js:

{%raw%} (function(){ angular.module('appsimples', []) .controller('HomeController', function($scope) { $scope.cidades = ['Araguaína', 'Gurupi', 'Palmas', 'Paraíso', 'Porto Nacional']; }); })(); {%endraw%}

Você pode ver o exemplo em funcionamento aqui.

No arquivo index.html (a view), na linha 22, a diretiva ng-repeat é aplicada ao elemento li. Neste caso, o uso da diretiva, baseada na expressão cidade in cidades, faz com que o elemento (e seu conteúdo) seja repetido conforme a quantidade de elementos em cidades (esperando-se que seja um vetor). No conteúdo do li está uma expressão que apresenta o nome de cada cidade da iteração.

No arquivo app.js, no controller HomeController, na linha 5, temos a definição do array cidades (com os elementos que são apresentados na view).

Filtrando o ng-repeat

Uma funcionalidade bastante interessante dos filtros em Angular é percebida ao serem aplicados à diretiva ng-repeat. O exemplo a seguir demonstra isso.

O arquivo index.html:

{%raw%} <!DOCTYPE html> <html lang="pt-br" ng-app="appsimples"> <head> <meta charset="utf-8" /> <title>App Simples</title> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" /> <link rel="stylesheet" href="style.css" /> <script>document.write('<base href="' + document.location + '" />');</script> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> <script src="app.js"></script> </head> <body ng-controller="HomeController"> <div class="container"> <h1>Cidades do Tocantins</h1> <p>A lista abaixo apresenta algumas cidades do Tocantins:</p> <ul> <li ng-repeat="cidade in cidades | filter:'Ara'">{{cidade}}</li> </ul> </div> </body> </html> {%endraw%}

O arquivo app.js:

{%raw%} (function(){ angular.module('appsimples', []) .controller('HomeController', function($scope) { $scope.cidades = ['Araguaína', 'Gurupi', 'Palmas', 'Paraíso', 'Porto Nacional']; }); })(); {%endraw%}

Você pode ver o exemplo em funcionamento aqui.

Na view, na linha 22, o conteúdo da diretiva ng-repeat foi modificado de modo a incluir o filtro filter. Neste caso, o array cidades está sendo filtrado, de forma que apenas serão apresentadas as cidades que têm "Ara" como parte do nome.

O exemplo a seguir é mais funcional: filtra os elementos do vetor cidades com base em uma entrada do usuário.

O arquivo index.html:

{%raw%} <!DOCTYPE html> <html lang="pt-br" ng-app="appsimples"> <head> <meta charset="utf-8" /> <title>App Simples</title> <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" /> <link rel="stylesheet" href="style.css" /> <script>document.write('<base href="' + document.location + '" />');</script> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script> <script src="app.js"></script> </head> <body ng-controller="HomeController"> <div class="container"> <h1>Cidades do Tocantins</h1> <p>A lista abaixo apresenta algumas cidades do Tocantins:</p> <p> <div class="input-group"> <input type="text" class="form-control" ng-model="q" placeholder="Pesquisar..."> <span class="input-group-addon"> <span class="glyphicon glyphicon-search"></span> </span> </div> </p> <ul> <li ng-repeat="cidade in cidades | filter:q">{{cidade}}</li> </ul> </div> </body> </html> {%endraw%}

O arquivo app.js:

{%raw%} (function(){ angular.module('appsimples', []) .controller('HomeController', function($scope) { $scope.cidades = ['Araguaína', 'Gurupi', 'Palmas', 'Paraíso', 'Porto Nacional']; }); })(); {%endraw%}

Você pode ver o exemplo em funcionamento aqui.

Na view, na linha 23, o elemento input está vinculado ao elemento do model q. Desta forma, na linha 28, o filtro é baseado neste elemento do model, não em um valor definido diretamente no código.

Propriedades

Propriedades especiais são expostas com a utilização da diretiva ng-repeat:

Propriedade Tipo Descrição
$index número Índice da iteração
$first booleano Indica se a iteração é a primeira
$middle booleano Indica se a iteração não é a primeira e nem a última
$last booleano Indica se a iteração é a última
$even booleano Indica se o índice da iteração é par
$odd booleano Indica se o índice da iteração é ímpar

results matching ""

    No results matching ""