AngularJS-direktiver: ng-init, ng-app, ng-model og ng-repeat

โšก Smart oppsummering

AngularJS-direktiver utvider ren HTML med ny oppfรธrsel. Markรธrene ng-app, ng-init, ng-model og ng-repeat bootstrapper en applikasjon, setter lokale data i frรธ, binder skjemakontroller til modellen og kloner elementer รฉn gang per samlingselement.

  • ๐Ÿงฉ Kjerneide: Et direktiv er en markรธr pรฅ et HTML-element som forteller AngularJS-kompilatoren at den skal knytte oppfรธrsel til det.
  • ๐Ÿš€ Bootstrap Point: ng-app deklarerer rotelementet og starter AngularJS automatisk sรฅ snart siden lastes inn.
  • ๐Ÿงฎ Lokale data: ng-init tilordner startverdier til omfangsvariabler inne i markupen, uten at det kreves noen kontroller.
  • ๐Ÿ”„ Toveisbinding: ng-model kobler en input, select eller textarea til en scope-egenskap, slik at redigeringer oppdaterer modellen umiddelbart.
  • ???? Gjentatt markering: ng-repeat kloner vertselementet sitt รฉn gang for hvert element i en array eller et objekt.
  • ๐ŸŽ›๏ธ Fire pรฅkallingsformer: restrict-egenskapen aksepterer E, A, C og M for element-, attributt-, klasse- og kommentarsyntaks.
  • ๐Ÿ“š Bredere bibliotek: AngularJS sender dusinvis av innebygde direktiver, blant dem ng-bind, ng-if, ng-show, ng-class og ng-click.

AngularJS-direktiver

Hva er Direktiv i AngularJS?

A Direktiv I AngularJS finnes det en kommando som gir HTML ny funksjonalitet. Nรฅr AngularJS gรฅr gjennom HTML-koden, vil den fรธrst finne direktivene pรฅ siden og deretter analysere HTML-siden deretter. Et enkelt eksempel pรฅ et AngularJS-direktiv, som vi har sett i tidligere kapitler, er ยซng-model-direktivetยป. Dette direktivet brukes til รฅ binde datamodellen vรฅr til visningen vรฅr.

OBS: Du kan ha grunnleggende AngularJS-kode pรฅ en HTML-side med direktivene ng-init, ng-repeat og ng-model uten behov for kontrollere. Logikken bak disse direktivene finnes i AngularJS-filen som leveres av GoogleKontrollere er neste nivรฅ av AngularJS-programmeringskonstruksjoner som tillater forretningslogikk, men som nevnt er det ikke obligatorisk รฅ ha en kontroller for at en applikasjon skal vรฆre en AngularJS-applikasjon.

Men hvordan ender en nettleser opp med รฅ kjรธre en?

Hvordan AngularJS-direktiver fungerer i HTML

Som vi definerte i innledningen, er et AngularJS-direktiv en mรฅte รฅ utvide funksjonaliteten til HTMLNรฅr siden lastes inn, gรฅr AngularJS-kompilatoren gjennom DOM-en, matcher hvert element mot de registrerte direktivene og legger til oppfรธrselen den finner.

AngularJS leveres med dusinvis av innebygde direktiver, pluss alle du registrerer selv. De fire som forklares nedenfor med utarbeidede eksempler, ng-app, ng-init, ng-model og ng-repeat, er de nybegynnere mรธter fรธrst. Fรธr disse eksemplene, legg merke til de fire mรฅtene et direktiv kan skrives pรฅ.

Hva er de fire typene AngularJS-direktiver?

Et direktiv er ikke alltid et attributt. AngularJS-kompilatoren kan matche et etter elementnavn, attributt, klassenavn eller kommentar, og hvert direktiv erklรฆrer hvilke former det aksepterer gjennom sin restrict egenskap. Standardinnstillingen er EA, sรฅ bรฅde element- og attributtsyntaks fungerer med mindre du sier noe annet. Verdien er viktigst nรฅr du skriver ditt eget direktiv, fordi kompilatoren ignorerer enhver form som restrict-verdien ekskluderer.

begrense verdi Matchet av Eksempel pรฅ markering Typisk bruk
E Elementnavn Selvstendige blokker som eier en mal
A Egenskap Legge til atferd i et eksisterende element
C Klassenavn Eldre markup som ikke kan ta nye attributter
M Kommentar Sjelden, beholdt for bakoverkompatibilitet

๐Ÿ‘ Tips: Foretrekker element- og attributtsyntaks. Offisiell referanse til AngularJS-direktivet behandler klasse- og kommentarskjemaer som eldre alternativer. Eksemplene nedenfor bruker alle attributtsyntaks.

ng-app i AngularJS

Dette brukes til รฅ initialisere et AngularJS-program. Nรฅr dette direktivet er pรฅ plass pรฅ en HTML-side, forteller det i utgangspunktet AngularJS at denne HTML-siden er et AngularJS-program.

Eksempel pรฅ ng-app

Eksemplet nedenfor viser hvordan du gjรธr et vanlig HTML-program til et AngularJS-program.

ng-app i 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>

โš ๏ธ Advarsel: Oppfรธringen beholder originalen chrset="UTF 8", nรธyaktig som publisert. Det riktige attributtet er charset="UTF-8".

Code Forklaring:

  1. Direktivet ยซng-appยป legges til i div-taggen vรฅr for รฅ indikere at dette programmet er et AngularJS-program. Merk at ng-app-direktivet kan brukes pรฅ enhver tag, sรฅ det kan ogsรฅ plasseres i body-taggen.
  2. Fordi vi har definert denne applikasjonen som en AngularJS-applikasjon, kan vi nรฅ bruke AngularJS-funksjonaliteten. I vรฅrt tilfelle bruker vi uttrykk for รฅ ganske enkelt sammenkoble to strenger.

Hvis koden kjรธres uten problemer, vises resultatet nedenfor.

Utgang:

ng-app i AngularJS

Utdataene viser tydelig utdataene fra uttrykket, noe som kun ble muliggjort fordi vi definerte applikasjonen som en AngularJS-applikasjon. Det neste direktivet leverer dataene.

ng-init i AngularJS

Dette brukes til รฅ initialisere applikasjonsdata. Noen ganger kan du trenge lokale data for applikasjonen din, og dette kan gjรธres med ng-init-direktivet.

Eksempel pรฅ ng-init

I dette eksemplet skal vi lage en variabel kalt "TutorialName" ved รฅ bruke ng-init-direktivet og vise verdien til den variabelen pรฅ siden.

ng-init i 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 Forklaring:

  1. ng-init-direktivet legges til div-taggen vรฅr for รฅ definere en lokal variabel kalt "TutorialName" og verdien gitt til dette er "AngularJS".
  2. Vi bruker uttrykk i AngularJS for รฅ vise resultatet av variabelnavnet ยซTutorialNameยป som ble definert i ng-init-direktivet vรฅrt.

Hvis koden kjรธres uten problemer, vises resultatet nedenfor.

Utgang:

ng-init i AngularJS

I utgangen,

  • Resultatet viser tydelig resultatet av uttrykket som inneholder strengen "AngularJS". Dette er som et resultat av at strengen "AngularJS" blir tildelt variabelen 'TutorialName' i ng-init-delen.

Det neste direktivet sender data tilbake fra skjermen til modellen.

ng-modell i AngularJS

Og til slutt har vi ng-model-direktivet, som brukes til รฅ binde verdien av en HTML-kontroll til applikasjonsdata.

Eksempel pรฅ ng-modell

I dette eksemplet,

  • Vi skal lage 2 variabler kalt "mengde" og "pris". Disse variablene kommer til รฅ vรฆre bundet til 2 tekstinntastingskontroller.
  • Vi skal da vise totalbelรธpet basert pรฅ multiplikasjon av bรฅde pris- og kvantitetsverdier.

ng-modell i 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 Forklaring:

  1. ng-init-direktivet legges til vรฅr div-tag for รฅ definere 2 lokale variabler; den ene kalles "kvantitet" og den andre er "pris".
  2. Nรฅ bruker vi ng-modelldirektivet til รฅ binde tekstboksene "People" og "Registration price" til vรฅre lokale variabler "quantity" og "price" henholdsvis.
  3. Til slutt viser vi totalen via et uttrykk, som er multiplikasjonen av mengde- og prisvariablene.

Hvis koden kjรธres uten problemer, vises resultatet nedenfor.

Utgang:

ng-modell i AngularJS

  • Utgangen viser tydelig multiplikasjonen av verdiene for personer og registreringspris.

Hvis du nรฅ endrer verdien for Personer og Registreringspris i tekstboksene, endres totalen automatisk.

ng-modell i AngularJS

  • Resultatet ovenfor viser bare kraften til databinding i AngularJS, som oppnรฅs ved bruk av ng-modell direktiv.

Den siste av de fire hรฅndterer mange verdier samtidig.

ng-gjenta i AngularJS

Dette brukes til รฅ gjenta et HTML-element. Eksemplet nedenfor viser hvordan du bruker ng-gjenta direktiv.

Eksempel pรฅ ng-repetisjon

I dette eksemplet,

  • Vi skal ha en rekke kapittelnavn i en matrisevariabel og
  • bruk deretter ng-repeat-direktivet for รฅ vise hvert element i matrisen som et listeelement

ng-gjenta i 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 Forklaring:

  1. ng-init-direktivet legges til vรฅr div-tag for รฅ definere en variabel kalt "kapitler", som er en matrisevariabel som inneholder 3 strenger.
  2. Elementet ng-repeat brukes ved รฅ deklarere en innebygd variabel kalt "navn" og gรฅ gjennom hvert element i kapittelmatrisen.
  3. Til slutt viser vi verdien av den lokale innebygde variabelen "navn".

Hvis koden kjรธres uten problemer, vises resultatet nedenfor.

Utgang:

ng-gjenta i AngularJS

  • Utdataene ovenfor viser bare at ng-repeat-direktivet tok hver verdi i matrisen kalt "kapitler" og opprettet HTML-listeelementer for hvert element i matrisen.

Disse fire dekker oppstart, data, binding og repetisjon. Listen nedenfor viser hva som kommer videre.

Andre vanlige innebygde AngularJS-direktiver

De fire direktivene ovenfor er startsettet, ikke hele biblioteket. Hver oppfรธring nedenfor er et attributt som du plasserer direkte pรฅ elementet den kontrollerer.

  • ng-bind: Skriver en omfangsverdi inn i et elements tekst uten รฅ kort vise rรฅ parenteser ved lasting.
  • ng-hvis: Fjerner elementet fra DOM-en nรฅr uttrykket er usant, og gjenoppbygger det nรฅr det er sant.
  • ng-vis og ng-skjul: Togglsynlighet med CSS. Elementet forblir i DOM-en, sรฅ gjentatte vekslinger koster mindre.
  • ng-klasse: Legger til eller fjerner CSS-klasser fra et uttrykk, slik at stilen fรธlger modellen.
  • ng-klikk: Kjรธrer et uttrykk eller en omfangsfunksjon nรฅr brukeren klikker pรฅ elementet.
  • ng-kontroller: Kobler en kontroller til en markupblokk nรฅr siden vokser ut av ng-init.
  • ng-deaktivert og ng-skrivebeskyttet: Angi attributtet for samsvarende form nรฅr uttrykket deres er sant.

Vanlige spรธrsmรฅl nedenfor svarer pรฅ spรธrsmรฅlene som oftest fรธlger etter denne listen.

Spรธrsmรฅl og svar

AngularJS normaliserer attributtnavn fรธr de matches. Den fjerner alle x- eller data-prefikser, og konverterer deretter bindestrek-, kolon- eller understrekingsskilletegn til camel-bokstaver. Det er derfor data-ng-app, x-ng-app og ng:app alle lรธses til samme ngApp-direktiv.

Begge skriver ut en omfangsverdi. Et interpolasjonsuttrykk kan kort vise sine rรฅ parenteser fรธr AngularJS er ferdig lastet, mens ng-bind lar elementet stรฅ tomt til kompileringen er fullfรธrt. Foretrekk ng-bind for tekst som vises over bretten.

Nei. Offisiell stรธtte for AngularJS ble avsluttet i januar 2022, sรฅ ingen flere oppdateringer blir utgitt. Eksisterende sider fortsetter รฅ fungere, men nye prosjekter bรธr starte pรฅ moderne Angular, hvor disse direktivene blir komponenter og strukturelle direktiver som *ngIf og *ngFor.

Delvis. Assistenter som GitHub Copilot omskriv ng-repeat som *ngFor og ng-if som *ngIf pรฅlitelig. Arv av omfang, toveisbindinger og tilpassede lenkefunksjoner trenger fortsatt en menneskelig gjennomgang fรธr den migrerte koden sendes.

Lim inn markupen, modulerklรฆringen og konsollutdataene i ChatGPT og spรธr hvilket direktiv som ikke samsvarte. Den oppdager vanligvis en manglende ng-app, et feilstavet attributt eller en restrict-verdi som blokkerer den valgte syntaksen.

Oppsummer dette innlegget med: