AngularJS ng-view példával
⚡ Okos összefoglaló
Az AngularJS nézetei lehetővé teszik, hogy az egyik oldal lecserélje a tartalmát ahelyett, hogy elnavigálna onnan, ami azonnali hatást kelt az egyoldalas alkalmazásokban. Az ng-view direktíva jelöli azt a régiót, amelyet minden útvonal a saját sablonjával és vezérlőjével cserél le.

Ismert oldalak, mint például Gmail Használja az egyoldalas alkalmazások koncepcióját. Amikor a felhasználó egy másik oldalt kér, az alkalmazás nem navigál el, hanem az új oldal nézetét jeleníti meg a meglévő oldalon belül, így olyan érzést kelt, mintha a felhasználó soha nem is távozott volna. Ugyanez érhető el az AngularJS-ben nézetek és útvonalak használatával.
⚠️ Támogatási közlemény: AngularJS elérve élettartam vége 2021. december 31-én és nem kap további javításokat vagy biztonsági javításokat. Az alábbi direktíva továbbra is pontos a meglévő AngularJS 1.x alkalmazások karbantartása érdekében; a modern szögletes az egyenértékű <router-outlet>.
Mi az a nézet?
A nézet a felhasználónak megjelenített tartalom. Amit a felhasználó látni szeretne, az alkalmazás megfelelő nézete jelenik meg.
Nézetek és útvonalak kombinálása logikai nézetekre osztja az alkalmazást, és mindegyiket egy nézethez köti. ellenőr, ami kezelhetőbbé teszi az alkalmazást.
Tegyük fel, hogy egy rendelési alkalmazásban az ügyfél megtekintheti a rendeléseit és újakat adhat le. Az alábbi ábra bemutatja, hogyan válik belőle egyoldalas alkalmazás.
Két különálló weboldal helyett, az egyik a „Rendelések megtekintése”, a másik az „Új rendelések” számára, AngularJS két nézetet használ ugyanazon az oldalon, két hivatkozáson keresztül elérhető, #show és a #new:
- Navigálás ide:
MyApp/#showmegjeleníti a Rendelések megtekintése nézetet az oldal elhagyása nélkül. Csak a meglévő oldal adott része frissül. - Navigálás ide:
MyApp/#newugyanezt teszi az Új megrendelések nézettel is.
Az alkalmazás nézetekké történő ilyen módon történő szétválasztása kezelhetővé és könnyen módosíthatóvá teszi azt, és minden nézethez tartozik egy megfelelő vezérlő, amely az adott funkció üzleti logikáját tartalmazza.
ng-view irányelv az AngularJS-ben
Az ngView Irányelv kiegészíti a $route szolgáltatást úgy, hogy az aktuális útvonal renderelt sablonját beilleszti a fő elrendezési fájlba, általában index.html.
Minden alkalommal, amikor az aktuális útvonal megváltozik, a benne foglalt nézet is vele együtt változik a $route konfiguráció, anélkül, hogy maga az oldal újratöltődne. útvonalak külön tárgyaljuk; itt a hangsúly a több nézet hozzáadásán van.
Az alábbi folyamatábra bemutatja a teljes folyamatot, amelyet a példa lépésről lépésre végigvezet.
Az ng-view megvalósítása az AngularJS-ben
Ez a példa két lehetőséget kínál a felhasználónak: esemény megjelenítése és esemény hozzáadása. Esemény hozzáadása az Esemény hozzáadása nézetet jeleníti meg, és ugyanez vonatkozik az Esemény megjelenítése lehetőségre is.
Step 1) Az angular-route fájlt szkriptreferenciaként kell megadni. Ez a fájl több útvonal és nézet használatához szükséges, és az AngularJS webhelyéről érhető el.
Step 2) Add hozzá a href és a div tageket.
- Adj hozzá href tageket, amelyek az „Új esemény hozzáadása” és az „Esemény megjelenítése” elemekre mutatnak.
- Adj hozzá egy div-et, amely a következőt tartalmazza:
ng-viewdirektíva a nézet régiójának megjelölésére. A megfelelő nézet minden hivatkozásra kattintva befecskendeződik oda.
Step 3) Az AngularJS szkriptcímkében add hozzá az útválasztási konfigurációt.
- Amikor a felhasználó rákattint a Új esemény link, AngularJS betöltések
add_event.html, beilleszti a jelölőkódját a nézetbe, és ezt használjaAddEventControlleraz üzleti logika számára. - Amikor a felhasználó rákattint a Esemény megjelenítése link, betöltődik
show_event.htmlés felhasználShowDisplayController. - Az
otherwiseA záradék beállítja a felhasználó számára alapértelmezetten megjelenített nézetet, amely ebben az esetben a DisplayEvent.
Step 4) Adjon hozzá vezérlőket mindkét függvény üzleti logikájának feldolgozásához. Mindegyik egyszerűen beállít egy üzenetet a hatókör-objektumán, amely akkor jelenik meg, amikor a megfelelő nézet megjelenik.
<!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>
⚠️ Három javítás az eredeti hirdetéshez képest. Először is, a linkek olvashatók #!NewEvent perjel nélkül, miközben az útvonalakat a következőképpen deklaráljuk /NewEvent, tehát semmi sem egyezett. Az AngularJS 1.6-tól az alapértelmezett hash előtag a következő: !, ami a helyes címet adja meg #!/NewEvent — egy perjel a felkiáltójel után. Másodszor, ShowDisplayController állítsd be az üzenetet „Ez egy esemény megjelenítése”-re, kihagyva a szót nak nek amit a környező szöveg idéz. Harmadszor, lib/bootstrap.js egy relatív elérési útról lett betöltve, amely sehová sem oldódik fel, és soha nem használatos, ezért eltávolításra került.
Step 5) Hozd létre az oldalakat add_event.html és a show_event.htmlMindegyik tartalmaz egy fejlécet és egy kifejezést, amely megjeleníti a vezérlője által befecskendezett üzenetet.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Ha a kód sikeresen végrehajtódik, a következő kimenet jelenik meg a böngészőben.
output:
Gyakori ng-view hibák és javításuk
Az ng-view hibáinak szinte mindegyike a modul bekötéséből, a címformátumból vagy az oldal kiszolgálásának módjából ered, nem pedig magából az utasításból.
- A nézeti terület üres marad: a
ngRoutea modul nem szerepelt függőségként, vagyangular-route.jsnem lett betöltve. Mindkettő szükséges, és a szkriptnek a következő után kell következnie:angular.min.js. - A linkek megváltoztatják a címet, de semmi sem jelenik meg: A href nem egyezik az útvonallal. Az AngularJS 1.6-ban a címnek szüksége van rá.
#!/Route; régebbi, 1.5-ös verzióra írt kódot használtak#/Route. - A sablonok betöltése CORS hibával nem sikerül: az oldalt közvetlenül a lemezről nyitották meg. HTTP-n keresztül szolgáltassák ki, mert
templateUrlegy AJAX kérés kéri le a fájlprotokoll blokkjait. - Csak az utolsó nézet jelenik meg: egynél több elem hordoz ng-view-t. Az AngularJS egyetlen nézetterületet kezel oldalonként.
- Első betöltéskor semmi sem látszik: nem
otherwisezáradék úgy van konfigurálva, hogy egy üres cím nem illeszkedik egyetlen útvonalra sem.










