AngularJS ng-view s příkladem
⚡ Chytré shrnutí
Zobrazení (views) v AngularJS umožňuje jedné stránce měnit obsah, místo aby se z ní odpojovala, což dává jednostránkové aplikaci okamžitý pocit. Direktiva ng-view označuje oblast, kterou každá trasa nahrazuje, vlastní šablonou a kontrolerem.

Známé stránky jako např. Gmail Použijte koncept jednostránkových aplikací. Když uživatel požádá o zobrazení jiné stránky, aplikace neodchází; zobrazí pohled nové stránky uvnitř stávající stránky, takže se zdá, jako by uživatel nikdy neodešel. Tohotéž je v AngularJS dosaženo pomocí pohledů spolu s trasami.
⚠️ Oznámení podpory: AngularJS dosaženo konec životnosti k 31. prosinci 2021 a neobdrží žádné další záplaty ani bezpečnostní opravy. Níže uvedená směrnice zůstává platná pro údržbu stávajících aplikací AngularJS 1.x; v moderních ANGULAR ekvivalent je <router-outlet>.
Co je pohled?
Pohled je obsah zobrazený uživateli. Ať už chce uživatel vidět cokoli, zobrazí se mu odpovídající pohled aplikace.
Kombinace pohledů a tras rozděluje aplikaci na logické pohledy a každý z nich je vázán na kontrolor, což usnadňuje správu aplikace.
Představte si objednávkovou aplikaci, ve které si zákazník může prohlížet objednávky a zadávat nové. Následující diagram ukazuje, jak se z ní stane jednostránková aplikace.
Místo dvou samostatných webových stránek, jedné pro „Zobrazení objednávek“ a druhé pro „Nové objednávky“, AngularJS používá dva pohledy na stejné stránce, ke kterým se dostanete prostřednictvím dvou referenčních odkazů, #show a #new:
- Navigace do
MyApp/#showzobrazí zobrazení Zobrazit objednávky bez opuštění stránky. Aktualizuje se pouze daná část existující stránky. - Navigace do
MyApp/#newtotéž platí pro zobrazení Nové objednávky.
Rozdělení aplikace do zobrazení tímto způsobem umožňuje její správu a snadné změny a každé zobrazení má odpovídající kontroler, který obsahuje obchodní logiku pro danou funkci.
Směrnice ng-view v AngularJS
Jedno ngView Směrnice doplňuje $route služba zahrnutím vykreslené šablony aktuální trasy do hlavního souboru rozvržení, obvykle index.html.
Pokaždé, když se aktuální trasa změní, změní se s ní i zobrazený pohled v souladu s $route konfigurace, aniž by se samotná stránka znovu načítala. trasy jsou popsány samostatně; zde se zaměřujeme na přidání více pohledů.
Níže uvedený vývojový diagram znázorňuje celý proces, kterým následně krok za krokem prochází příklad.
Jak implementovat ng-view v AngularJS
Tento příklad nabízí uživateli dvě možnosti: zobrazit událost a přidat událost. Kliknutím na Přidat událost zobrazuje zobrazení Přidat událost a totéž platí pro zobrazení události.
Krok 1) Jako referenci skriptu zahrňte soubor angular-route. Tento soubor je vyžadován pro použití více tras a zobrazení a je k dispozici na stránkách AngularJS.
Krok 2) Přidejte tagy href a div.
- Přidejte tagy href odkazující na „Přidat novou událost“ a „Zobrazit událost“.
- Přidejte div nesoucí
ng-viewdirektiva pro označení oblasti zobrazení. Odpovídající zobrazení se tam vloží vždy, když se klikne na kterýkoli z odkazů.
Krok 3) Do tagu skriptu AngularJS přidejte konfiguraci směrování.
- Když uživatel klikne na Nová událost odkaz, načtení AngularJS
add_event.html, vloží své značky do zobrazení a použijeAddEventControllerpro obchodní logiku. - Když uživatel klikne na DisplayEvent odkaz, načte se
show_event.htmla použitíShowDisplayController. - Jedno
otherwiseKlauzule nastavuje výchozí zobrazení zobrazené uživateli, což je zde DisplayEvent.
Krok 4) Přidejte kontrolery pro zpracování obchodní logiky pro obě funkce. Každý z nich jednoduše nastaví zprávu na svém objektu rozsahu, která se zobrazí při zobrazení odpovídajícího pohledu.
<!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>
⚠️ Tři opravy původního inzerátu. Nejprve odkazy zní #!NewEvent bez lomítka, zatímco trasy jsou deklarovány jako /NewEvent, takže se nic neshodovalo. Od AngularJS 1.6 je výchozí prefix hash !, což vytváří správnou adresu #!/NewEvent — lomítko za vykřičníkem. Za druhé, ShowDisplayController nastavit zprávu na „Toto je zobrazení události“, chybí slovo na že okolní text cituje. Za třetí, lib/bootstrap.js byl načten z relativní cesty, která nikam nevede a nikdy se nepoužívá, takže byl odstraněn.
Krok 5) Vytvořte stránky add_event.html a show_event.htmlKaždý z nich obsahuje hlavičku a výraz, který zobrazuje zprávu vloženou jeho kontrolerem.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Pokud je kód úspěšně spuštěn, zobrazí se v prohlížeči následující výstup.
Výstup:
Časté chyby ng-view a jak je opravit
Téměř každé selhání ng-view pochází spíše ze zapojení modulu, formátu adresy nebo způsobu, jakým je stránka obsluhována, než ze samotné direktivy.
- Oblast zobrazení zůstane prázdná: ο
ngRoutemodul nebyl uveden jako závislost, neboangular-route.jsnebyl načten. Oba jsou povinné a skript musí následovat za nimi.angular.min.js. - Odkazy mění adresu, ale nic se nezobrazuje: href neodpovídá trase. Z AngularJS 1.6 adresa potřebuje
#!/Routepoužit starší kód napsaný pro verzi 1.5#/Route. - Šablony se nezdaří načíst s chybou CORS: Stránka byla otevřena přímo z disku. Zobrazte ji přes HTTP, protože
templateUrlje načten požadavkem AJAX, bloky protokolu souboru. - Zobrazí se vždy pouze poslední pohled: více než jeden element nese ng-view. AngularJS respektuje jednu oblast zobrazení na stránku.
- Při prvním načtení se nic nezobrazí: Ne
otherwiseKlauzule je nakonfigurována tak, že prázdná adresa neodpovídá žádné trase.










