AngularJS ng-view com exemplo
โก Resumo Inteligente
Em AngularJS, as views permitem que uma pรกgina troque seu conteรบdo em vez de navegar para outra, o que proporciona a sensaรงรฃo de instantaneamente uma aplicaรงรฃo de pรกgina รบnica. A diretiva `ng-view` marca a regiรฃo que cada rota substitui por seu prรณprio template e controlador.

Locais conhecidos como Gmail Utilize o conceito de Single Page Applications (SPAs). Quando um usuรกrio solicita uma pรกgina diferente, o aplicativo nรฃo navega para outra pรกgina; ele exibe a visualizaรงรฃo da nova pรกgina dentro da pรกgina existente, dando a impressรฃo de que o usuรกrio nunca saiu. O mesmo รฉ alcanรงado no AngularJS usando views em conjunto com rotas.
โ ๏ธ Aviso de suporte: AngularJS alcanรงou fim da vida em 31 de dezembro de 2021 e nรฃo recebe mais patches ou correรงรตes de seguranรงa. A diretiva abaixo permanece vรกlida para a manutenรงรฃo de aplicaรงรตes AngularJS 1.x existentes; em versรตes modernas. Angular o equivalente รฉ <router-outlet>.
O que รฉ uma visรฃo?
Uma visualizaรงรฃo รฉ o conteรบdo mostrado ao usuรกrio. Aquilo que o usuรกrio deseja ver, a visualizaรงรฃo correspondente do aplicativo รฉ exibida.
A combinaรงรฃo de visualizaรงรตes e rotas divide uma aplicaรงรฃo em visualizaรงรตes lรณgicas e vincula cada uma a uma rota. controlador, o que torna a aplicaรงรฃo mais gerenciรกvel.
Considere um aplicativo de pedidos no qual o cliente pode visualizar pedidos e fazer novos. O diagrama abaixo mostra como ele se torna um aplicativo de pรกgina รบnica.
Em vez de duas pรกginas web separadas, uma para โVer Pedidosโ e outra para โNovos Pedidosโ, AngularJS Utiliza duas visualizaรงรตes na mesma pรกgina, acessรญveis atravรฉs de dois links de referรชncia. #show e #new:
- Navegando para
MyApp/#showExibe a visualizaรงรฃo de pedidos sem sair da pรกgina. Apenas essa seรงรฃo da pรกgina atual รฉ atualizada. - Navegando para
MyApp/#newFaz o mesmo para a visualizaรงรฃo de Novos Pedidos.
Separar uma aplicaรงรฃo em visualizaรงรตes dessa forma a torna gerenciรกvel e fรกcil de modificar, e cada visualizaรงรฃo tem um controlador correspondente que contรฉm a lรณgica de negรณcios para essa funรงรฃo.
Diretiva ng-view em AngularJS
O ngView Directivas complementa o $route serviรงo, incluindo o modelo renderizado da rota atual no arquivo de layout principal, normalmente index.html.
Cada vez que a rota atual muda, a visualizaรงรฃo incluรญda muda com ela, de acordo com o $route Configuraรงรฃo, sem que a prรณpria pรกgina seja recarregada. rotas sรฃo abordados separadamente; aqui o foco รฉ adicionar mรบltiplas visualizaรงรตes.
O fluxograma abaixo mostra todo o processo, que o exemplo descreve passo a passo.
Como implementar o ng-view em AngularJS
Este exemplo apresenta duas opรงรตes ao usuรกrio: exibir um evento e adicionar um evento. Clicando Adicionar um evento Exibe a visualizaรงรฃo Adicionar Evento, e o mesmo se aplica ร visualizaรงรฃo Exibir Evento.
Passo 1) Inclua o arquivo angular-route como uma referรชncia de script. Este arquivo รฉ necessรกrio para usar vรกrias rotas e visualizaรงรตes e estรก disponรญvel no site do AngularJS.
Passo 2) Adicione as tags href e a tag div.
- Adicione tags href com links para โAdicionar novo eventoโ e โExibir eventoโ.
- Adicione uma div contendo o
ng-viewDiretiva para marcar a regiรฃo de visualizaรงรฃo. A visualizaรงรฃo correspondente รฉ inserida ali sempre que um dos links รฉ clicado.
Passo 3) Na tag de script do AngularJS, adicione a configuraรงรฃo de roteamento.
- Quando o usuรกrio clicar no NovoEvento link, AngularJS carrega
add_event.html, injeta sua marcaรงรฃo na visualizaรงรฃo e usaAddEventControllerpara a lรณgica de negรณcios. - Quando o usuรกrio clicar no Evento de exibiรงรฃo link, ele carrega
show_event.htmle usaShowDisplayController. - O
otherwiseA clรกusula define a visualizaรงรฃo padrรฃo exibida ao usuรกrio, que neste caso รฉ DisplayEvent.
Passo 4) Adicione controladores para processar a lรณgica de negรณcios de ambas as funรงรตes. Cada um simplesmente define uma mensagem em seu objeto de escopo, exibida quando a visualizaรงรฃo correspondente for mostrada.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Event Registration</title> <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script> <script src="https://code.angularjs.org/1.8.3/angular-route.js"></script> </head> <body ng-app="sampleApp"> <h1>Guru99 Global Event</h1> <div class="container"> <ul> <li><a href="#!/NewEvent">Add New Event</a></li> <li><a href="#!/DisplayEvent">Display Event</a></li> </ul> <div ng-view></div> </div> <script> var app = angular.module('sampleApp', ["ngRoute"]); app.config(function($routeProvider) { $routeProvider .when("/NewEvent", { templateUrl: "add_event.html", controller: "AddEventController" }) .when("/DisplayEvent", { templateUrl: "show_event.html", controller: "ShowDisplayController" }) .otherwise({ redirectTo: '/DisplayEvent' }); }); app.controller("AddEventController", function($scope) { $scope.message = "This is to Add a new Event"; }); app.controller("ShowDisplayController", function($scope) { $scope.message = "This is to display an Event"; }); </script> </body> </html>
โ ๏ธ Trรชs correรงรตes ao anรบncio original. Primeiro, os links diziam #!NewEvent sem barra, enquanto as rotas sรฃo declaradas como /NewEvent, portanto, nada correspondeu. A partir do AngularJS 1.6, o prefixo de hash padrรฃo รฉ !, o que torna o endereรงo correto #!/NewEvent โ uma barra apรณs o ponto de exclamaรงรฃo. Segundo, ShowDisplayController Defina a mensagem como โIsto รฉ exibir um eventoโ, faltando a palavra. para que o texto circundante cita. Terceiro, lib/bootstrap.js O arquivo foi carregado a partir de um caminho relativo que nรฃo resolve em lugar nenhum e nunca รฉ usado, portanto foi removido.
Passo 5) Crie as pรกginas add_event.html e show_event.htmlCada um contรฉm um cabeรงalho e uma expressรฃo que exibe a mensagem injetada pelo seu controlador.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Se o cรณdigo for executado com sucesso, a seguinte saรญda serรก exibida no navegador.
Saรญda:
Erros comuns do ng-view e como corrigi-los
Quase todas as falhas do ng-view decorrem da configuraรงรฃo do mรณdulo, do formato do endereรงo ou da forma como a pรกgina estรก sendo servida, e nรฃo da prรณpria diretiva.
- A รกrea de visualizaรงรฃo permanece vazia: da
ngRouteO mรณdulo nรฃo foi listado como uma dependรชncia, ouangular-route.jsnรฃo foi carregado. Ambos sรฃo necessรกrios, e o script deve vir depois.angular.min.js. - Os links alteram o endereรงo, mas nada รฉ exibido: O href nรฃo corresponde ร rota. A partir do AngularJS 1.6, o endereรงo precisa...
#!/Route; cรณdigo antigo escrito para a versรฃo 1.5 usado#/Route. - Os modelos nรฃo carregam devido a um erro de CORS: A pรกgina foi aberta diretamente do disco. Sirva-a via HTTP, porque
templateUrlO arquivo รฉ obtido por meio de uma solicitaรงรฃo AJAX e o protocolo de arquivo รฉ bloqueado. - Apenas a รบltima imagem รฉ exibida: Mais de um elemento carrega ng-view. O AngularJS respeita apenas uma regiรฃo de visualizaรงรฃo por pรกgina.
- Nada aparece no primeiro carregamento: nรฃo
otherwiseA clรกusula estรก configurada, portanto, um endereรงo vazio nรฃo corresponde a nenhuma rota.










