AngularJS ng-visning med eksempel
โก Smart oppsummering
Visninger i AngularJS lar รฉn side bytte innhold i stedet for รฅ navigere bort, noe som gjรธr at en applikasjon med รฉn side fรธles umiddelbar. ng-view-direktivet markerer regionen som hver rute erstatter med sin egen mal og kontroller.

Kjente nettsteder som f.eks. Gmail bruk konseptet med enkeltsideapplikasjoner. Nรฅr en bruker ber om en annen side, navigerer ikke applikasjonen bort; den viser visningen av den nye siden inne i den eksisterende siden, slik at det fรธles som om brukeren aldri har forlatt den. Det samme oppnรฅs i AngularJS ved รฅ bruke visninger sammen med ruter.
โ ๏ธ Stรธttemelding: AngularJS nรฅdde levetidens slutt 31. desember 2021 og mottar ingen ytterligere oppdateringer eller sikkerhetsrettelser. Direktivet nedenfor forblir nรธyaktig for vedlikehold av eksisterende AngularJS 1.x-applikasjoner; i moderne Vinkel ekvivalenten er <router-outlet>.
Hva er en visning?
En visning er innholdet som vises til brukeren. Uansett hva brukeren รธnsker รฅ se, vises den samsvarende visningen av applikasjonen.
ร kombinere visninger og ruter deler en applikasjon inn i logiske visninger og binder hver av dem til en controller, noe som gjรธr applikasjonen mer hรฅndterbar.
La oss anta et bestillingsprogram der en kunde kan se bestillinger og legge inn nye. Diagrammet nedenfor viser hvordan det blir et enkeltsides program.
I stedet for to separate nettsider, รฉn for ยซVis bestillingerยป og รฉn for ยซNye bestillingerยป, AngularJS bruker to visninger pรฅ samme side, nรฅdd via to referanselenker, #show og #new:
- Navigerer til
MyApp/#showviser visningen Vis bestillinger uten รฅ forlate siden. Bare den delen av den eksisterende siden oppdateres. - Navigerer til
MyApp/#newgjรธr det samme for visningen Nye ordrer.
ร dele en applikasjon inn i visninger pรฅ denne mรฅten gjรธr den hรฅndterbar og enkel รฅ endre, og hver visning har en tilsvarende kontroller som inneholder forretningslogikken for den funksjonen.
ng-view-direktivet i AngularJS
Ocuco ngView Direktiver utfyller $route tjenesten ved รฅ inkludere den gjengitte malen for gjeldende rute i hovedlayoutfilen, vanligvis index.html.
Hver gang den gjeldende ruten endres, endres den inkluderte visningen med den i henhold til $route konfigurasjon, uten at selve siden lastes inn pรฅ nytt. ruter dekkes separat; her er fokuset รฅ legge til flere visninger.
Flytskjemaet nedenfor viser hele prosessen, som eksemplet deretter gรฅr gjennom trinn for trinn.
Hvordan implementere ng-view i AngularJS
Dette eksemplet presenterer to alternativer for brukeren: vise en hendelse og legge til en hendelse. Ved รฅ klikke Legg til en hendelse viser Legg til hendelse-visningen, og det samme gjelder for Vis hendelse.
Trinn 1) Inkluder angular-route-filen som en skriptreferanse. Denne filen er nรธdvendig for รฅ bruke flere ruter og visninger, og er tilgjengelig fra AngularJS-nettstedet.
Trinn 2) Legg til href-taggene og div-taggen.
- Legg til href-tagger som lenker til ยซLegg til ny hendelseยป og ยซVis hendelseยป.
- Legg til en div som bรฆrer
ng-viewdirektiv for รฅ markere visningsomrรฅdet. Den samsvarende visningen injiseres der hver gang en av lenkene klikkes.
Trinn 3) Legg til rutingskonfigurasjonen i AngularJS-skripttaggen.
- Nรฅr brukeren klikker pรฅ Ny hendelse lenke, AngularJS laster
add_event.html, injiserer markupen sin i visningen og brukerAddEventControllerfor forretningslogikken. - Nรฅr brukeren klikker pรฅ Visningshendelse lenke, den laster
show_event.htmlog brukerShowDisplayController. - Ocuco
otherwiseklausulen angir standardvisningen som vises til brukeren, som her er DisplayEvent.
Trinn 4) Legg til kontrollere for รฅ behandle forretningslogikken for begge funksjonene. Hver av dem setter ganske enkelt en melding pรฅ sitt omfangsobjekt, som vises nรฅr den samsvarende visningen vises.
<!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 rettelser til den opprinnelige oppfรธringen. Fรธrst leses lenkene #!NewEvent uten skrรฅstrek mens rutene er deklarert som /NewEvent, sรฅ ingenting samsvarte. Fra AngularJS 1.6 er standard hash-prefiks !, som gjรธr den riktige adressen #!/NewEvent โ en skrรฅstrek etter utropstegnet. For det andre, ShowDisplayController Sett meldingen til ยซDette viser en hendelseยป, og utgรฅ av ordet til som den omkringliggende teksten siterer. For det tredje, lib/bootstrap.js ble lastet inn fra en relativ sti som ikke lรธses noe sted og aldri brukes, sรฅ den har blitt fjernet.
Trinn 5) Lag sidene add_event.html og show_event.htmlHver inneholder en header og et uttrykk som viser meldingen som injiseres av kontrolleren.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Hvis koden kjรธres uten problemer, vises fรธlgende utdata i nettleseren.
Utgang:
Vanlige ng-view-feil og hvordan du fikser dem
Nesten alle ng-view-feil kommer fra modulens kabling, adresseformatet eller mรฅten siden blir servert pรฅ, snarere enn fra selve direktivet.
- Visningsomrรฅdet forblir tomt: de
ngRoutemodulen ble ikke oppfรธrt som en avhengighet, ellerangular-route.jsble ikke lastet inn. Begge er obligatoriske, og skriptet mรฅ komme etterangular.min.js. - Lenker endrer adressen, men ingenting gjengis: href-en samsvarer ikke med ruten. Fra AngularJS 1.6 trenger adressen
#!/Route; eldre kode skrevet for 1.5 brukt#/Route. - Maler lastes ikke inn med en CORS-feil: siden ble รฅpnet direkte fra disken. Server den over HTTP, fordi
templateUrlhentes av en AJAX-forespรธrsel filprotokollblokkene. - Bare den siste visningen vises: Mer enn ett element bรฆrer ng-view. AngularJS bruker ett enkelt visningsomrรฅde per side.
- Ingenting vises ved fรธrste opplading: Nei.
otherwiseklausulen er konfigurert, slik at en tom adresse ikke samsvarer med noen rute.










