AngularJS direktívák: ng-init, ng-app, ng-model és ng-repeat

⚡ Okos összefoglaló

Az AngularJS direktívák új viselkedéssel bővítik a sima HTML-t. Az ng-app, ng-init, ng-model és ng-repeat markerek elindítják az alkalmazást, helyi adatokat küldenek be, űrlapvezérlőket kötnek a modellhez, és gyűjteményelemenként egyszer klónozzák az elemeket.

  • 🧩 Alapötlet: Az utasítás egy HTML elemen található jelölő, amely arra utasítja az AngularJS fordítót, hogy viselkedést rendeljen hozzá.
  • 🚀 Bootstrap Point: Az ng-app deklarálja a gyökérelemet, és automatikusan elindítja az AngularJS-t, amint az oldal betöltődik.
  • 🧮 Helyi adatok: Az ng-init kezdőértékeket rendel a hatókör változóihoz a jelölésen belül, vezérlő nélkül.
  • 🔄 Kétirányú kötés: Az ng-model egy bemenetet, kiválasztást vagy szövegterületet egy scope tulajdonsághoz csatol, így a szerkesztések azonnal frissítik a modellt.
  • 📋 Ismételt jelölés: Az ng-repeat minden tömb vagy objektum eleméhez egyszer klónozza a host elemét.
  • 🎛️ Négy hívásforma: A restrict tulajdonság E, A, C és M értékeket fogad el elem-, attribútum-, osztály- és megjegyzésszintaxisként.
  • ???? Szélesebb könyvtár: Az AngularJS több tucat beépített direktívát szállít, köztük az ng-bind, ng-if, ng-show, ng-class és ng-click.

AngularJS direktívák

Mi az irányelv az AngularJS-ben?

A Irányelv Az AngularJS-ben található parancs új funkciókat ad a HTML-nek. Amikor az AngularJS végigmegy a HTML-kódon, először megkeresi az oldalon található direktívákat, majd ennek megfelelően elemzi a HTML-oldalt. Egy egyszerű példa az AngularJS direktívára, amelyet a korábbi fejezetekben láttunk, az „ng-model direktíva”. Ezt az direktívát használjuk az adatmodellünk nézethez kötésére.

Jegyzet: Egy HTML oldalon alapvető AngularJS kódot használhatsz az ng-init, ng-repeat és ng-model direktívákkal vezérlők nélkül. Ezen direktívák logikája az AngularJS fájlban található, amelyet a következő biztosít: GoogleA vezérlők a következő szintű AngularJS programozási konstrukciók, amelyek lehetővé teszik az üzleti logikát, de ahogy említettük, ahhoz, hogy egy alkalmazás AngularJS alkalmazás legyen, nem kötelező vezérlővel rendelkeznie.

De hogyan futtatja végül egy böngésző ezt?

Hogyan működnek az AngularJS direktívák HTML-ben?

Ahogy a bevezetőben definiáltuk, az AngularJS direktíva egy módja a funkcionalitás kibővítésének HTMLAmikor az oldal betöltődik, az AngularJS fordító végigjárja a DOM-ot, összeveti az egyes elemeket a regisztrált direktívákkal, és csatolja a talált viselkedést.

AngularJS több tucat beépített direktívával rendelkezik, plusz olyanokkal, amelyeket te magad regisztrálsz. Az alábbiakban bemutatott négy, működő példákkal illusztrált direktíva – ng-app, ng-init, ng-model és ng-repeat – az, amelyekkel a kezdők először találkoznak. Mielőtt ezeket a példákat bemutatnánk, nézzük meg a direktívák négyféle megírási módját.

Melyek az AngularJS direktívák négy típusa?

Egy direktíva nem mindig attribútum. Az AngularJS fordító elemnév, attribútum, osztálynév vagy megjegyzés alapján tud egyezést létrehozni, és minden direktíva deklarálja, hogy mely formákat fogadja el a restrict tulajdonság. Az alapértelmezett érték EA, tehát az elem- és attribútumszintaxis is működik, hacsak másképp nem jelezzük. Az érték a legfontosabb, ha saját direktívát írunk, mivel a fordító figyelmen kívül hagy minden olyan űrlapot, amelyet a korlátozó érték kizár.

korlátozó érték Egyezik a következővel: Példa jelölésre Tipikus felhasználás
E Elem neve Önálló blokkok, amelyek sablonnal rendelkeznek
A Attribútum Viselkedés hozzáadása egy meglévő elemhez
C Osztály név Régi jelölőnyelv, amely nem vehet fel új attribútumokat
M Megjegyzés Ritka, a visszafelé kompatibilitás érdekében megtartva

👍 Tipp: Az elem- és attribútumszintaxist részesítsd előnyben. hivatalos AngularJS direktíva hivatkozás az osztály- és megjegyzésűrlapokat korábbi opciókként kezeli. Az alábbi példák mind attribútumszintaxist használnak.

ng-app az AngularJS-ben

Ez egy AngularJS alkalmazás inicializálására szolgál. Amikor ez az utasítás bekerül egy HTML oldalba, alapvetően közli az AngularJS-sel, hogy ez a HTML oldal egy AngularJS alkalmazás.

ng-app példa

Az alábbi példa bemutatja, hogyan lehet egy normál HTML alkalmazásból AngularJS alkalmazást készíteni.

ng-app az AngularJS-ben

<!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>

⚠️ Figyelmeztetés: A lista megtartja az eredetit chrset="UTF 8", pontosan úgy, ahogy közzétéve. A helyes attribútum: charset="UTF-8".

Code Magyarázat:

  1. Az „ng-app” direktívát hozzáadjuk a div taghez, hogy jelezzük, hogy ez az alkalmazás egy AngularJS alkalmazás. Fontos megjegyezni, hogy az ng-app direktíva bármely tagre alkalmazható, így a body tagbe is beilleszthető.
  2. Mivel ezt az alkalmazást AngularJS alkalmazásként definiáltuk, most már használhatjuk az AngularJS funkcionalitását. Esetünkben kifejezéseket használunk két karakterlánc egyszerű összefűzésére.

Ha a kód sikeresen végrehajtódik, az alábbi kimenet jelenik meg.

output:

ng-app az AngularJS-ben

A kimenet világosan mutatja a kifejezés kimenetét, ami csak azért lehetséges, mert az alkalmazást AngularJS alkalmazásként definiáltuk. A következő direktíva adja meg az adatait.

ng-init az AngularJS-ben

Ez az alkalmazásadatok inicializálására szolgál. Előfordulhat, hogy az alkalmazáshoz helyi adatokra van szükség, ezt az ng-init direktívával lehet megtenni.

Példa az ng-init-re

Ebben a példában létrehozunk egy „TutorialName” nevű változót az ng-init direktíva segítségével, és megjelenítjük ennek a változónak az értékét az oldalon.

ng-init az AngularJS-ben

<!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 Magyarázat:

  1. Az ng-init direktíva hozzáadódik a div címkénkhoz, hogy meghatározza a „TutorialName” nevű helyi változót, és az ennek adott értéke „AngularJS”.
  2. Az AngularJS kifejezéseit használjuk a „TutorialName” változónév kimenetének megjelenítéséhez, amelyet az ng-init direktívánkban definiáltunk.

Ha a kód sikeresen végrehajtódik, az alábbi kimenet jelenik meg.

output:

ng-init az AngularJS-ben

A kimenetben,

  • Az eredmény egyértelműen mutatja az „AngularJS” karakterláncot tartalmazó kifejezés kimenetét. Ez annak köszönhető, hogy az „AngularJS” karakterlánc hozzá van rendelve a „TutorialName” változóhoz az ng-init szakaszban.

A következő direktíva visszaküldi az adatokat a képernyőről a modellbe.

ng-modell AngularJS-ben

Végül pedig ott van az ng-model direktíva, amely egy HTML vezérlő értékének alkalmazásadatokhoz kötésére szolgál.

Példa az ng-modellre

Ebben a példában

  • Létre fogunk hozni 2 változót, amelyeket „mennyiség” és „ár” neveznek. Ezek a változók 2 szövegbeviteli vezérlőhöz lesznek kötve.
  • Ezután megjelenítjük a teljes összeget az ár és a mennyiségi értékek szorzata alapján.

ng-modell AngularJS-ben

<!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 Magyarázat:

  1. Az ng-init direktíva hozzáadódik a div címkénkhoz, hogy 2 helyi változót határozzon meg; az egyiket „mennyiségnek”, a másikat „árnak” nevezik.
  2. Most az ng-model direktívát használjuk, hogy a „People” és a „Registration price” szövegmezőket a „quantity” és a „price” helyi változóinkhoz kötjük.
  3. Végül egy kifejezésen keresztül mutatjuk meg az Összes értéket, ami a mennyiség és az ár változók szorzata.

Ha a kód sikeresen végrehajtódik, az alábbi kimenet jelenik meg.

output:

ng-modell AngularJS-ben

  • A kimenet egyértelműen mutatja az emberek és a regisztrációs ár értékeinek szorzatát.

Ha most módosítja a Személyek és a Regisztrációs ár értékét a szövegmezőkben, az Összesen automatikusan megváltozik.

ng-modell AngularJS-ben

  • A fenti kimenet jól mutatja az AngularJS adatkötésének erejét, amelyet a használatával érnek el. ng-modell direktíva.

A négy közül az utolsó egyszerre sok értéket kezel.

ng-repeat az AngularJS-ben

Ez egy HTML-elem megismétlésére szolgál. Az alábbi példa bemutatja, hogyan kell használni a ng-repeat direktíva.

Példa az ng-repeat-re

Ebben a példában

  • Fejezetnevek tömbje lesz egy tömbváltozóban és
  • majd az ng-repeat direktívával jelenítse meg a tömb minden elemét listaelemként

ng-repeat az AngularJS-ben

<!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 Magyarázat:

  1. Az ng-init direktíva hozzáadódik a div címkénkhoz, hogy meghatározza a „chapters” nevű változót, amely egy 3 karakterláncot tartalmazó tömbváltozó.
  2. Az ng-repeat elemet a „names” nevű soron belüli változó deklarálásával és a Chapters tömb minden elemének végighaladásával használjuk.
  3. Végül megmutatjuk a 'names' helyi soron belüli változó értékét.

Ha a kód sikeresen végrehajtódik, az alábbi kimenet jelenik meg.

output:

ng-repeat az AngularJS-ben

  • A fenti kimenet csak azt mutatja, hogy az ng-repeat direktíva a „fejezeteknek” nevezett tömb minden egyes értékét felvette, és a tömb minden eleméhez HTML listaelemeket hozott létre.

Ez a négy a startupot, az adatkezelést, a kötést és az ismétlést foglalja magában. Az alábbi lista bemutatja, hogy mi következik.

Egyéb gyakran használt beépített AngularJS direktívák

A fenti négy direktíva a kiinduló halmazt alkotja, nem a teljes könyvtárat. Az alábbi bejegyzések mindegyike egy attribútum, amelyet közvetlenül az általuk vezérelt elemhez rendelünk.

  • ng-kötés: Hatóköri értéket ír be egy elem szövegébe anélkül, hogy betöltéskor rövid időre megjelenítené a nyers zárójeleket.
  • ng-if: Eltávolítja az elemet a DOM-ból, ha a kifejezés hamis, és újraépíti, ha igaz.
  • ng-show és ng-hide: TogglLáthatóság CSS-sel. Az elem a DOM-ban marad, így az ismételt váltás olcsóbb.
  • ng-osztály: CSS osztályokat ad hozzá vagy távolít el egy kifejezésből, lehetővé téve, hogy a stílus kövesse a modellt.
  • ng-kattintás: Kifejezést vagy hatókörfüggvényt futtat, amikor a felhasználó az elemre kattint.
  • ng-vezérlő: Egy vezérlőt csatol egy jelölőkód blokkhoz, miután az oldal kinövi az ng-init-et.
  • ng-letiltva és ng-csak olvasható: Állítsa be az egyező form attribútumot, amikor a kifejezésük igaz.

Az alábbi GYIK a listát követő leggyakoribb kérdésekre ad választ.

GYIK

Az AngularJS normalizálja az attribútumneveket az egyeztetés előtt. Eltávolít minden x- vagy data- előtagot, majd a kötőjelet, kettőspontot vagy aláhúzásjelet camel betűtípusúra konvertálja. Ezért a data-ng-app, x-ng-app és ng:app mind ugyanarra az ngApp direktívára van feloldva.

Mindkettő egy hatókör értéket nyomtat ki. Egy interpolációs kifejezés rövid időre megjelenítheti a nyers zárójeleket, mielőtt az AngularJS befejezi a betöltést, míg az ng-bind üresen hagyja az elemet, amíg a fordítás be nem fejeződik. Az ng-bind függvényt részesítsük előnyben a hajtás felett megjelenő szöveghez.

Nem. Az AngularJS hivatalos támogatása 2022 januárjában megszűnt, így további javítások nem kerülnek kiadásra. A meglévő oldalak továbbra is működnek, de az új projekteknek a modern Angularon kell elindulniuk, ahol ezek az utasítások komponensekké és strukturális utasításokká, például *ngIf és *ngFor válnak.

Részben. Asszisztensek, mint például GitHub másodpilóta Megbízhatóan írd át az ng-repeat kódot *ngFor-ra, az ng-if-et pedig *ngIf-re. A hatóköröröklés, a kétirányú kötések és az egyéni linkfüggvények továbbra is emberi felülvizsgálatot igényelnek a migrált kód kiszállítása előtt.

Illeszd be a jelölést, a moduldeklarációt és a konzol kimenetét a következőbe: ChatGPT és kérdezd meg, melyik direktíva nem egyezett. Általában hiányzó ng-app-ot, elgépelést vagy egy restrict értéket észlel, amely blokkolja a kiválasztott szintaxist.

Foglald össze ezt a bejegyzést a következőképpen: