AngularJS ng-view mit Beispiel
โก Intelligente Zusammenfassung
Views in AngularJS ermรถglichen es, den Inhalt einer Seite auszutauschen, anstatt die Seite zu verlassen. Dadurch fรผhlt sich eine Single-Page-Anwendung sofort an. Die ng-view-Direktive markiert den Bereich, den jede Route durch ihre eigene Vorlage und ihren eigenen Controller ersetzt.

Bekannte Seiten wie zum Beispiel Gmail Das Konzept der Single-Page-Anwendung (SPA) wird genutzt. Fordert ein Benutzer eine andere Seite an, navigiert die Anwendung nicht weg, sondern zeigt die Ansicht der neuen Seite innerhalb der bestehenden Seite an. Dadurch entsteht der Eindruck, der Benutzer habe die Anwendung nie verlassen. Dasselbe wird in AngularJS mithilfe von Views und Routen erreicht.
โ ๏ธ Supporthinweis: AngularJS hat erreicht Lebensende am 31. Dezember 2021 und erhรคlt keine weiteren Patches oder Sicherheitskorrekturen. Die folgende Anweisung bleibt fรผr die Wartung bestehender AngularJS 1.x-Anwendungen gรผltig; in modernen Angular Das รquivalent ist <router-outlet>.
Was ist eine Ansicht?
Eine Ansicht ist der Inhalt, der dem Benutzer angezeigt wird. Was auch immer der Benutzer sehen mรถchte, die entsprechende Ansicht der Anwendung wird angezeigt.
Durch die Kombination von Ansichten und Routen wird eine Anwendung in logische Ansichten unterteilt und jede einzelne an eine Route gebunden. Controller, wodurch die Anwendung besser handhabbar wird.
Angenommen, wir haben eine Bestellanwendung, in der Kunden Bestellungen einsehen und neue aufgeben kรถnnen. Das folgende Diagramm zeigt, wie daraus eine Single-Page-Anwendung wird.
Statt zweier separater Webseiten, eine fรผr โBestellungen anzeigenโ und eine fรผr โNeue Bestellungenโ, AngularJS nutzt zwei Ansichten auf derselben Seite, die รผber zwei Verweislinks erreichbar sind. #show und #new:
- Navigieren zu
MyApp/#showDie Ansicht โBestellungen anzeigenโ wird angezeigt, ohne dass die Seite verlassen werden muss. Nur dieser Abschnitt der aktuellen Seite wird aktualisiert. - Navigieren zu
MyApp/#newDasselbe gilt fรผr die Ansicht โNeue Auftrรคgeโ.
Durch die Aufteilung einer Anwendung in Ansichten bleibt sie รผbersichtlich und leicht รคnderbar, und jede Ansicht verfรผgt รผber einen entsprechenden Controller, der die Geschรคftslogik fรผr diese Funktion enthรคlt.
ng-view-Direktive in AngularJS
Das ngView Richtlinien ergรคnzt die $route Der Service wird durch Einbindung der gerenderten Vorlage der aktuellen Route in die Hauptlayoutdatei bereitgestellt, normalerweise index.html.
Jedes Mal, wenn sich die aktuelle Route รคndert, รคndert sich auch die zugehรถrige Ansicht entsprechend. $route Konfiguration, ohne dass die Seite selbst neu geladen wird. Routen werden separat behandelt; hier liegt der Schwerpunkt auf dem Hinzufรผgen mehrerer Ansichten.
Das untenstehende Flussdiagramm zeigt den gesamten Prozess, der im Beispiel dann Schritt fรผr Schritt erlรคutert wird.
So implementieren Sie ng-view in AngularJS
Dieses Beispiel bietet dem Benutzer zwei Optionen: ein Ereignis anzeigen und ein Ereignis hinzufรผgen. Klicken Fรผgen Sie ein Ereignis hinzu zeigt die Ansicht "Ereignis hinzufรผgen" an, und dasselbe gilt fรผr die Ansicht "Ereignis anzeigen".
Schritt 1) Fรผgen Sie die Datei angular-route als Skriptreferenz hinzu. Diese Datei wird benรถtigt, um mehrere Routen und Ansichten zu verwenden, und ist auf der AngularJS-Website verfรผgbar.
Schritt 2) Fรผge die href-Tags und das div-Tag hinzu.
- Fรผgen Sie href-Tags hinzu, die auf โNeues Ereignis hinzufรผgenโ und โEreignis anzeigenโ verlinken.
- Fรผge ein Div-Element hinzu, das den Inhalt enthรคlt.
ng-viewAnweisung zum Markieren des Ansichtsbereichs. Die entsprechende Ansicht wird dort eingefรผgt, sobald einer der Links angeklickt wird.
Schritt 3) Fรผgen Sie im AngularJS-Skript-Tag die Routing-Konfiguration hinzu.
- Wenn der Benutzer auf die Neues Ereignis Link, AngularJS lรคdt
add_event.html, fรผgt sein Markup in die Ansicht ein und verwendetAddEventControllerfรผr die Geschรคftslogik. - Wenn der Benutzer auf die DisplayEvent Link, er lรคdt
show_event.htmlund verwendetShowDisplayController. - Das
otherwiseDie Klausel legt die Standardansicht fest, die dem Benutzer angezeigt wird, in diesem Fall DisplayEvent.
Schritt 4) Fรผgen Sie Controller hinzu, um die Geschรคftslogik fรผr beide Funktionen zu verarbeiten. Jeder Controller setzt lediglich eine Nachricht in seinem Scope-Objekt, die angezeigt wird, wenn die entsprechende Ansicht angezeigt wird.
<!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>
โ ๏ธ Drei Korrekturen zum ursprรผnglichen Angebot. Zunรคchst einmal lesen die Links #!NewEvent ohne Schrรคgstrich, wรคhrend die Routen wie folgt deklariert werden: /NewEventDaher gab es keine รbereinstimmung. Ab AngularJS 1.6 ist das Standard-Hash-Prรคfix !, wodurch die korrekte Adresse entsteht #!/NewEvent โ ein Schrรคgstrich nach dem Ausrufezeichen. Zweitens, ShowDisplayController Die Nachricht sollte auf โDies ist eine Ereignisanzeigeโ gesetzt werden, wobei das Wort fehlt. zu dass der umgebende Text zitiert. Drittens, lib/bootstrap.js wurde von einem relativen Pfad geladen, der nirgendwo aufgelรถst wird und nie verwendet wird, daher wurde er entfernt.
Schritt 5) Erstellen Sie die Seiten add_event.html und show_event.htmlJeder dieser Ausdrรผcke enthรคlt einen Header und einen Ausdruck, der die vom zugehรถrigen Controller eingefรผgte Nachricht anzeigt.
- add_event.html
<h2>Add New Event</h2> {{message}}
- show_event.html
<h2>Show Event</h2> {{message}}
Wenn der Code erfolgreich ausgefรผhrt wird, wird die folgende Ausgabe im Browser angezeigt.
Ausgang:
Hรคufige ng-view-Fehler und wie man sie behebt
Fast alle Fehler bei ng-view lassen sich auf die Modulverdrahtung, das Adressformat oder die Art und Weise, wie die Seite ausgeliefert wird, zurรผckfรผhren und nicht auf die Direktive selbst.
- Der Ansichtsbereich bleibt leer: die
ngRouteDas Modul wurde nicht als Abhรคngigkeit aufgefรผhrt, oderangular-route.jswurde nicht geladen. Beide werden benรถtigt, und das Skript muss danach kommen.angular.min.js. - Links รคndern die Adresse, aber es wird nichts angezeigt: Der href-Wert stimmt nicht mit der Route รผberein. Ab AngularJS 1.6 muss die Adresse angepasst werden.
#!/Route; รคlterer Code, geschrieben fรผr Version 1.5, verwendet#/Route. - Vorlagen kรถnnen aufgrund eines CORS-Fehlers nicht geladen werden: Die Seite wurde direkt von der Festplatte geรถffnet. Stellen Sie sie รผber HTTP bereit, weil
templateUrlwird durch eine AJAX-Anfrage abgerufen, das Dateiprotokoll blockiert. - Es erscheint immer nur die letzte Ansicht: Mehrere Elemente tragen ng-view. AngularJS unterstรผtzt nur eine einzige View-Region pro Seite.
- Beim ersten Laden wird nichts angezeigt: nicht
otherwiseDie Klausel ist so konfiguriert, dass eine leere Adresse keiner Route entspricht.










