AngularJS ng-vy med exempel
โก Smart sammanfattning
Vyer i AngularJS lรฅter en sida byta innehรฅll istรคllet fรถr att navigera bort, vilket รคr det som gรถr att en applikation med en enda sida kรคnns omedelbar. Direktivet ng-view markerar den region som varje rutt ersรคtter med sin egen mall och kontroller.

Vรคlkรคnda sajter som t.ex. Gmail Anvรคnd konceptet med Single Page Applications. Nรคr en anvรคndare begรคr en annan sida navigerar inte applikationen bort; den visar vyn av den nya sidan inuti den befintliga sidan, sรฅ det kรคnns som om anvรคndaren aldrig lรคmnat den. Detsamma uppnรฅs i AngularJS med hjรคlp av vyer tillsammans med rutter.
โ ๏ธ Supportmeddelande: AngularJS nรฅdde slut pรฅ livscykeln den 31 december 2021 och fรฅr inga ytterligare patchar eller sรคkerhetsfixar. Direktivet nedan fรถrblir korrekt fรถr underhรฅll av befintliga AngularJS 1.x-applikationer; i moderna Vinkel motsvarigheten รคr <router-outlet>.
Vad รคr en vy?
En vy รคr det innehรฅll som visas fรถr anvรคndaren. Vad anvรคndaren รคn vill se, visas matchande vy fรถr applikationen.
Att kombinera vyer och rutter delar upp en applikation i logiska vyer och binder var och en till en styrenhet, vilket gรถr applikationen mer hanterbar.
Anta en bestรคllningsapplikation dรคr en kund kan se bestรคllningar och lรคgga nya. Diagrammet nedan visar hur det blir en applikation med en enda sida.
Istรคllet fรถr tvรฅ separata webbsidor, en fรถr "Visa bestรคllningar" och en fรถr "Nya bestรคllningar", AngularJS anvรคnder tvรฅ vyer pรฅ samma sida, nรฅs via tvรฅ referenslรคnkar, #show och #new:
- Navigera till
MyApp/#showvisar vyn Visa ordrar utan att lรคmna sidan. Endast den delen av den befintliga sidan uppdateras. - Navigera till
MyApp/#newgรถr samma sak fรถr vyn Nya order.
Att separera en applikation i vyer pรฅ det hรคr sรคttet gรถr den hanterbar och enkel att รคndra, och varje vy har en motsvarande kontroller som innehรฅller affรคrslogiken fรถr den funktionen.
ng-view-direktivet i AngularJS
Ocuco-landskapet ngView Direktiven kompletterar $route tjรคnsten genom att inkludera den renderade mallen fรถr den aktuella rutten i huvudlayoutfilen, normalt index.html.
Varje gรฅng den aktuella rutten รคndras, รคndras den inkluderade vyn med den enligt $route konfiguration, utan att sjรคlva sidan laddas om. rutter behandlas separat; hรคr ligger fokus pรฅ att lรคgga till flera vyer.
Flรถdesschemat nedan visar hela processen, som exemplet sedan gรฅr igenom steg fรถr steg.
Hur man implementerar ng-view i AngularJS
Det hรคr exemplet presenterar tvรฅ alternativ fรถr anvรคndaren: visa en hรคndelse och lรคgga till en hรคndelse. Genom att klicka Lรคgg till en hรคndelse visar vyn Lรคgg till hรคndelse, och detsamma gรคller fรถr Visa hรคndelse.
Steg 1) Inkludera angular-route-filen som en skriptreferens. Den hรคr filen krรคvs fรถr att anvรคnda flera rutter och vyer och รคr tillgรคnglig frรฅn AngularJS-webbplatsen.
Steg 2) Lรคgg till href-taggarna och div-taggen.
- Lรคgg till href-taggar som lรคnkar till โLรคgg till ny hรคndelseโ och โVisa hรคndelseโ.
- Lรคgg till en div som bรคr
ng-viewdirektiv fรถr att markera vyomrรฅdet. Matchande vy infogas dรคr varje gรฅng nรฅgon av lรคnkarna klickas.
Steg 3) I AngularJS-skripttaggen lรคgger du till routingkonfigurationen.
- Nรคr anvรคndaren klickar pรฅ Nyhรคndelse lรคnk, AngularJS laddas
add_event.html, injicerar dess markup i vyn och anvรคnderAddEventControllerfรถr affรคrslogiken. - Nรคr anvรคndaren klickar pรฅ Visa hรคndelse lรคnk, den laddas
show_event.htmloch anvรคndningarShowDisplayController. - Ocuco-landskapet
otherwiseklausulen anger standardvyn som visas fรถr anvรคndaren, vilket hรคr รคr DisplayEvent.
Steg 4) Lรคgg till styrenheter fรถr att bearbeta affรคrslogiken fรถr bรฅda funktionerna. Var och en anger helt enkelt ett meddelande pรฅ sitt scope-objekt, som visas nรคr matchande vy visas.
<!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>
โ ๏ธ Tre korrigeringar av den ursprungliga listan. Fรถrst lรคses lรคnkarna #!NewEvent utan snedstreck medan rutterna deklareras som /NewEvent, sรฅ inget matchade. Frรฅn AngularJS 1.6 รคr standardhashprefixet !, vilket gรถr att adressen รคr korrekt #!/NewEvent โ ett snedstreck efter utropstecknet. Fรถr det andra, ShowDisplayController Stรคll in meddelandet till "Detta visar en hรคndelse", och ta bort ordet till som den omgivande texten citerar. Fรถr det tredje, lib/bootstrap.js laddades frรฅn en relativ sรถkvรคg som inte matchas nรฅgonstans och aldrig anvรคnds, sรฅ den har tagits bort.
Steg 5) Skapa sidorna add_event.html och show_event.htmlVarje element innehรฅller en rubrik och ett uttryck som visar meddelandet som injiceras av dess kontrollant.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Om koden kรถrs korrekt visas fรถljande utdata i webblรคsaren.
Produktion:
Vanliga ng-view-fel och hur man รฅtgรคrdar dem
Nรคstan alla ng-view-fel kommer frรฅn modulens kopplingar, adressformatet eller hur sidan serveras snarare รคn frรฅn sjรคlva direktivet.
- Vyomrรฅdet fรถrblir tomt: d
ngRoutemodulen listades inte som ett beroende, ellerangular-route.jsladdades inte. Bรฅda รคr obligatoriska, och skriptet mรฅste komma efterangular.min.js. - Lรคnkar รคndrar adressen men ingenting renderas: href-filen matchar inte rutten. Frรฅn AngularJS 1.6 behรถver adressen
#!/Route; รคldre kod skriven fรถr 1.5 anvรคnds#/Route. - Mallar kan inte lรคsas in med ett CORS-fel: sidan รถppnades direkt frรฅn disken. Servera den via HTTP, eftersom
templateUrlhรคmtas av en AJAX-begรคran filprotokollblocken. - Endast den sista vyn visas nรฅgonsin: Mer รคn ett element anvรคnder ng-view. AngularJS anvรคnder en enda vyregion per sida.
- Ingenting visas vid fรถrsta laddningen: Nej
otherwiseklausulen รคr konfigurerad, sรฅ en tom adress matchar ingen rutt.










