AngularJS-Anweisungen: ng-init, ng-app, ng-model und ng-repeat

โšก Intelligente Zusammenfassung

AngularJS-Direktiven erweitern einfaches HTML um neue Verhaltensweisen. Die Marker ng-app, ng-init, ng-model und ng-repeat initialisieren eine Anwendung, initialisieren lokale Daten, binden Formularsteuerelemente an das Modell und klonen Elemente einmal pro Sammlungselement.

  • ๐Ÿงฉ Kernidee: Eine Direktive ist eine Markierung auf einem HTML-Element, die dem AngularJS-Compiler mitteilt, dass er diesem Element Verhalten hinzufรผgen soll.
  • ๐Ÿš€ Bootstrap Point: ng-app deklariert das Wurzelelement und startet AngularJS automatisch, sobald die Seite geladen wird.
  • ๐Ÿงฎ Lokale Daten: ng-init weist Scope-Variablen innerhalb des Markups Startwerte zu, ein Controller ist nicht erforderlich.
  • ๐Ÿ”„ Zwei-Wege-Bindung: ng-model verknรผpft ein Eingabefeld, ein Auswahlfeld oder ein Textfeld mit einer Bereichseigenschaft, sodass ร„nderungen das Modell sofort aktualisieren.
  • ๐Ÿ“‹ Wiederholte Auszeichnung: ng-repeat klont sein Host-Element einmal fรผr jedes Element in einem Array oder Objekt.
  • ๏ธ Vier Anrufungsformen: Die Eigenschaft โ€žrestrictโ€œ akzeptiert E, A, C und M fรผr die Syntax von Elementen, Attributen, Klassen und Kommentaren.
  • ๐Ÿ“š Erweiterte Bibliothek: AngularJS liefert Dutzende integrierte Direktiven, darunter ng-bind, ng-if, ng-show, ng-class und ng-click.

AngularJS-Direktiven

Was ist eine Direktive in AngularJS?

A Direktive In AngularJS ist `ng-model` ein Befehl, der HTML neue Funktionalitรคt hinzufรผgt. Beim Durchlaufen des HTML-Codes sucht AngularJS zunรคchst nach den Direktiven auf der Seite und parst die HTML-Seite anschlieรŸend entsprechend. Ein einfaches Beispiel fรผr eine AngularJS-Direktive, die wir bereits in frรผheren Kapiteln kennengelernt haben, ist die โ€žng-model-Direktiveโ€œ. Diese Direktive dient dazu, unser Datenmodell an unsere Ansicht zu binden.

Hinweis: Sie kรถnnen grundlegenden AngularJS-Code in einer HTML-Seite mit den Direktiven `ng-init`, `ng-repeat` und `ng-model` verwenden, ohne dass Controller erforderlich sind. Die Logik fรผr diese Direktiven befindet sich in der AngularJS-Datei, die von [Name der Bibliothek/des Frameworks] bereitgestellt wird. GoogleController sind die nรคchste Stufe der AngularJS-Programmierkonstrukte, die Geschรคftslogik ermรถglichen. Wie bereits erwรคhnt, ist es jedoch nicht zwingend erforderlich, dass eine Anwendung einen Controller besitzt, um eine AngularJS-Anwendung zu sein.

Aber wie kommt es, dass ein Browser eine solche Datei ausfรผhrt?

Wie AngularJS-Direktiven in HTML funktionieren

Wie wir in der Einleitung definiert haben, ist eine AngularJS-Direktive eine Mรถglichkeit, die Funktionalitรคt von HTMLBeim Laden der Seite durchlรคuft der AngularJS-Compiler das DOM, gleicht jedes Element mit den registrierten Direktiven ab und fรผgt das gefundene Verhalten hinzu.

AngularJS Das Programm enthรคlt Dutzende integrierte Direktiven sowie weitere, die Sie selbst registrieren kรถnnen. Die vier unten anhand von Beispielen erlรคuterten Direktiven โ€“ ng-app, ng-init, ng-model und ng-repeat โ€“ sind die, mit denen Anfรคnger zuerst in Berรผhrung kommen. Beachten Sie vor diesen Beispielen die vier Mรถglichkeiten, eine Direktive zu schreiben.

Welche vier Arten von AngularJS-Direktiven gibt es?

Eine Direktive ist nicht immer ein Attribut. Der AngularJS-Compiler kann sie anhand von Elementnamen, Attributnamen, Klassennamen oder Kommentaren identifizieren, und jede Direktive deklariert รผber ihren Namen, welche Formen sie akzeptiert. restrict Eigenschaft. Der Standardwert ist EAElement- und Attributsyntax funktionieren also beide, sofern nichts anderes angegeben ist. Der Wert ist besonders wichtig, wenn Sie eine eigene Direktive schreiben, da der Compiler alle Formen ignoriert, die durch den `restrict`-Wert ausgeschlossen werden.

Wert einschrรคnken Abgestimmt durch Beispiel-Markup Typische Verwendung
E Elementname Eigenstรคndige Blรถcke, die eine Vorlage besitzen
A Attribut Hinzufรผgen von Verhalten zu einem bestehenden Element
C Klassenname Legacy-Markup, das keine neuen Attribute aufnehmen kann
M Kommentar Selten, wird aus Grรผnden der Abwรคrtskompatibilitรคt aufbewahrt.

๐Ÿ’ก TIPP: Bevorzugen Sie die Element- und Attributsyntax. offizielle AngularJS-Direktivenreferenz Behandelt Klassen- und Kommentarformen als veraltete Optionen. Die folgenden Beispiele verwenden alle die Attributsyntax.

ng-App in AngularJS

Dies dient zur Initialisierung einer AngularJS-Anwendung. Wenn diese Direktive in einer HTML-Seite vorhanden ist, teilt sie AngularJS im Grunde mit, dass diese HTML-Seite eine AngularJS-Anwendung ist.

Beispiel fรผr ng-app

Das folgende Beispiel zeigt, wie man eine normale HTML-Anwendung in eine AngularJS-Anwendung umwandelt.

ng-App in AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="">

    Tutorial Name : {{ "Angular" + "JS"}}

</div>

</body>
</html>

โš ๏ธ Warnung: Die Anzeige behรคlt das Original bei chrset="UTF 8", genau wie verรถffentlicht. Das korrekte Attribut ist charset="UTF-8".

Code Erlรคuterung:

  1. Die โ€žng-appโ€œ-Direktive wird unserem div-Tag hinzugefรผgt, um anzuzeigen, dass es sich bei dieser Anwendung um eine AngularJS-Anwendung handelt. Beachten Sie, dass die ng-app-Direktive auf jedes beliebige Tag angewendet werden kann, also beispielsweise auch auf den body-Tag.
  2. Da wir diese Anwendung als AngularJS-Anwendung definiert haben, kรถnnen wir nun die AngularJS-Funktionalitรคt nutzen. In unserem Fall verwenden wir Ausdrรผcke, um einfach zwei Zeichenketten zu verketten.

Wenn der Code erfolgreich ausgefรผhrt wird, erscheint die unten stehende Ausgabe.

Ausgang:

ng-App in AngularJS

Die Ausgabe zeigt deutlich das Ergebnis des Ausdrucks, was nur mรถglich war, weil wir die Anwendung als AngularJS-Anwendung definiert haben. Die nรคchste Direktive liefert ihre Daten.

ng-init in AngularJS

Dies dient zur Initialisierung von Anwendungsdaten. Gelegentlich benรถtigen Sie mรถglicherweise lokale Daten fรผr Ihre Anwendung; dies kann mit der ng-init-Direktive erfolgen.

Beispiel fรผr ng-init

In diesem Beispiel erstellen wir mithilfe der ng-init-Direktive eine Variable namens โ€žTutorialNameโ€œ und zeigen den Wert dieser Variablen auf der Seite an.

ng-init in AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="TutorialName='Angular JS'">

    Tutorial Name : {{ TutorialName}}

</div>

</body>
</html>

Code Erlรคuterung:

  1. Die ng-init-Direktive wird zu unserem div-Tag hinzugefรผgt, um eine lokale Variable namens โ€žTutorialNameโ€œ zu definieren, und der ihr zugewiesene Wert ist โ€žAngularJSโ€œ.
  2. Wir verwenden Ausdrรผcke in AngularJS, um die Ausgabe der Variablen mit dem Namen โ€žTutorialNameโ€œ anzuzeigen, die in unserer ng-init-Direktive definiert wurde.

Wenn der Code erfolgreich ausgefรผhrt wird, erscheint die unten stehende Ausgabe.

Ausgang:

ng-init in AngularJS

In der Ausgabe

  • Das Ergebnis zeigt deutlich die Ausgabe des Ausdrucks, der den String โ€žAngularJSโ€œ enthรคlt. Dies ist darauf zurรผckzufรผhren, dass die Zeichenfolge โ€žAngularJSโ€œ der Variablen โ€žTutorialNameโ€œ im Abschnitt โ€žng-initโ€œ zugewiesen wurde.

Die nรคchste Anweisung sendet Daten vom Bildschirm zurรผck an das Modell.

ng-Modell in AngularJS

Und schlieรŸlich gibt es noch die ng-model-Direktive, mit der der Wert eines HTML-Steuerelements an Anwendungsdaten gebunden wird.

Beispiel eines NG-Modells

In diesem Beispiel

  • Wir werden zwei Variablen namens โ€žMengeโ€œ und โ€žPreisโ€œ erstellen. Diese Variablen werden an zwei Texteingabesteuerelemente gebunden.
  • AnschlieรŸend zeigen wir den Gesamtbetrag basierend auf der Multiplikation der Preis- und Mengenwerte an.

ng-Modell in AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="quantity=1;price=5">

    People : <input type="number" ng-model="quantity">

    Registration Price : <input type="number" ng-model="price">

    Total : {{quantity * price}}

</div>

</body>
</html>

Code Erlรคuterung:

  1. Die ng-init-Direktive wird zu unserem div-Tag hinzugefรผgt, um zwei lokale Variablen zu definieren; Das eine heiรŸt โ€žMengeโ€œ und das andere โ€žPreisโ€œ.
  2. Jetzt verwenden wir die ng-model-Direktive, um die Textfelder โ€žPersonenโ€œ und โ€žRegistrierungspreisโ€œ an unsere lokalen Variablen โ€žMengeโ€œ bzw. โ€žPreisโ€œ zu binden.
  3. SchlieรŸlich zeigen wir das Gesamtergebnis รผber einen Ausdruck an, der die Multiplikation der Mengen- und Preisvariablen darstellt.

Wenn der Code erfolgreich ausgefรผhrt wird, erscheint die unten stehende Ausgabe.

Ausgang:

ng-Modell in AngularJS

  • Die Ausgabe zeigt deutlich die Multiplikation der Werte fรผr Personen und Registrierungspreis.

Wenn Sie nun die Werte fรผr Personen und Registrierungspreis in den Textfeldern รคndern, รคndert sich der Gesamtbetrag automatisch.

ng-Modell in AngularJS

  • Die obige Ausgabe verdeutlicht die Leistungsfรคhigkeit der Datenbindung in AngularJS, die durch die Verwendung von โ€ฆ erreicht wird. ng-model-Direktive.

Der letzte der vier verarbeitet viele Werte gleichzeitig.

ng-repeat in AngularJS

Dies wird verwendet, um ein HTML-Element zu wiederholen. Das folgende Beispiel zeigt die Verwendung von ng-repeat-Direktive.

Beispiel fรผr ng-repeat

In diesem Beispiel

  • Wir werden ein Array von Kapitelnamen in einer Array-Variablen haben und
  • Verwenden Sie dann die Direktive ng-repeat, um jedes Element des Arrays als Listenelement anzuzeigen

ng-repeat in AngularJS

<!DOCTYPE html>
<html>
<head>
    <meta chrset="UTF 8">
    <title>Event Registration</title>
</head>
<body>

<script src="https://code.angularjs.org/1.6.9/angular-route.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.js"></script>
<script src="https://code.angularjs.org/1.6.9/angular.min.js"></script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<h1> Guru99 Global Event</h1>

<div ng-app="" ng-init="chapters=['Controllers','Models','Filters']">
    <ul>
        <li ng-repeat="names in chapters">
            {{names}}
        </li>
    </ul>

</div>

</body>
</html>

Code Erlรคuterung:

  1. Die ng-init-Direktive wird zu unserem div-Tag hinzugefรผgt, um eine Variable namens โ€žchaptersโ€œ zu definieren, bei der es sich um eine Array-Variable mit 3 Zeichenfolgen handelt.
  2. Das ng-repeat-Element wird verwendet, indem eine Inline-Variable namens โ€žnamesโ€œ deklariert und jedes Element im Kapitelarray durchgegangen wird.
  3. AbschlieรŸend zeigen wir den Wert der lokalen Inline-Variable โ€žNamenโ€œ.

Wenn der Code erfolgreich ausgefรผhrt wird, erscheint die unten stehende Ausgabe.

Ausgang:

ng-repeat in AngularJS

  • Die obige Ausgabe zeigt lediglich, dass die ng-repeat-Direktive jeden Wert im Array namens โ€žChaptersโ€œ รผbernommen und HTML-Listenelemente fรผr jedes Element im Array erstellt hat.

Diese vier Aspekte umfassen Start, Daten, Bindung und Wiederholung. Die folgende Liste zeigt, was als Nรคchstes kommt.

Weitere hรคufig verwendete integrierte AngularJS-Direktiven

Die vier oben genannten Direktiven bilden den Ausgangspunkt, nicht die gesamte Bibliothek. Jeder Eintrag unten ist ein Attribut, das Sie direkt dem jeweiligen Element zuweisen.

  • ng-bind: Schreibt einen Bereichswert in den Text eines Elements, ohne beim Laden kurz die geschweiften Klammern anzuzeigen.
  • ng-if: Entfernt das Element aus dem DOM, wenn sein Ausdruck falsch ist, und baut es neu auf, wenn er wahr ist.
  • ng-show und ng-hide: TogglDie Sichtbarkeit kann mit CSS angepasst werden. Das Element bleibt im DOM erhalten, wodurch wiederholte Umschaltungen weniger Aufwand bedeuten.
  • ng-class: Fรผgt CSS-Klassen zu einem Ausdruck hinzu oder entfernt sie, sodass das Styling dem Modell folgt.
  • ng-click: Fรผhrt einen Ausdruck oder eine Bereichsfunktion aus, wenn der Benutzer auf das Element klickt.
  • ng-controller: Fรผgt einem Markup-Block einen Controller hinzu, sobald die Seite zu groรŸ fรผr ng-init ist.
  • ng-disabled und ng-readonly: Setzen Sie das entsprechende Formularattribut, wenn der zugehรถrige Ausdruck wahr ist.

Die folgenden FAQs beantworten die am hรคufigsten gestellten Fragen im Anschluss an diese Liste.

Hรคufig gestellte Fragen

AngularJS normalisiert Attributnamen vor dem Abgleich. Es entfernt das Prรคfix โ€žx-โ€œ oder โ€ždata-โ€œ und wandelt Bindestriche, Doppelpunkte oder Unterstriche in CamelCase um. Daher werden data-ng-app, x-ng-app und ng:app alle zur selben ngApp-Direktive aufgelรถst.

Beide geben einen Gรผltigkeitsbereichswert aus. Ein Interpolationsausdruck kann seine geschweiften Klammern kurz anzeigen, bevor AngularJS vollstรคndig geladen ist, wรคhrend ng-bind das Element leer lรคsst, bis die Kompilierung abgeschlossen ist. Verwenden Sie ng-bind bevorzugt fรผr Text, der im sichtbaren Bereich (Above the Fold) angezeigt wird.

Nein. Der offizielle Support fรผr AngularJS endete im Januar 2022, daher werden keine weiteren Patches mehr verรถffentlicht. Bestehende Seiten funktionieren weiterhin, neue Projekte sollten jedoch mit dem aktuellen Angular beginnen, wo diese Direktiven zu Komponenten und Strukturdirektiven wie *ngIf und *ngFor werden.

Teilweise. Assistenten wie zum Beispiel GitHub-Copilot ng-repeat sollte zuverlรคssig durch *ngFor und ng-if durch *ngIf ersetzt werden. Gรผltigkeitsbereichsvererbung, bidirektionale Datenbindung und benutzerdefinierte Linkfunktionen mรผssen vor der Auslieferung des migrierten Codes weiterhin manuell รผberprรผft werden.

Fรผgen Sie den Markup-Code, die Moduldeklaration und die Konsolenausgabe in folgendes ein: ChatGPT und fragt, welche Direktive nicht zutrifft. Normalerweise wird ein fehlendes ng-app, ein falsch geschriebenes Attribut oder ein restrict-Wert entdeckt, der die gewรคhlte Syntax blockiert.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: