AngularJS-direktiivit: ng-init, ng-app, ng-model ja ng-repeat

โšก ร„lykรคs yhteenveto

AngularJS-direktiivit laajentavat tavallista HTML:รครค uusilla toiminnoilla. ng-app-, ng-init-, ng-model- ja ng-repeat-markkerit kรคynnistรคvรคt sovelluksen, syรถttรคvรคt paikallisia tietoja, sitovat lomakekomponentit malliin ja kloonaavat elementtejรค kerran kokoelman kohdetta kohden.

  • ๐Ÿงฉ Perusidea: Direktiivi on HTML-elementissรค oleva merkinnรคn ominaisuus, joka kรคskee AngularJS-kรครคntรคjรครค liittรคmรครคn siihen kรคyttรคytymisen.
  • ๐Ÿš€ Bootstrap Kohta: ng-app mรครคrittรครค juurielementin ja kรคynnistรครค AngularJS:n automaattisesti heti sivun latauduttua.
  • ๐Ÿงฎ Paikalliset tiedot: ng-init mรครคrittรครค aloitusarvot laajuusmuuttujille merkintรถjen sisรคllรค ilman ohjainta.
  • ๐Ÿ”„ Kaksisuuntainen sidonta: ng-model linkittรครค syรถtteen, valinnan tai tekstialueen scope-ominaisuuteen, joten muokkaukset pรคivittรคvรคt mallin vรคlittรถmรคsti.
  • ๐Ÿ“‹ Toistetut merkinnรคt: ng-repeat kloonaa isรคntรคelementtinsรค kerran jokaista taulukon tai objektin alkiota kohden.
  • ๐ŸŽ›๏ธ Neljรค kutsumuotoa: restrict-ominaisuus hyvรคksyy E:n, A:n, C:n ja M:n elementti-, attribuutti-, luokka- ja kommenttisyntaksille.
  • ๐Ÿ“š Laajempi kirjasto: AngularJS toimittaa kymmeniรค sisรครคnrakennettuja direktiivejรค, mukaan lukien ng-bind, ng-if, ng-show, ng-class ja ng-click.

AngularJS-direktiivit

Mikรค on AngularJS:n direktiivi?

A Direktiivi AngularJS:ssรค on komento, joka antaa HTML:lle uusia toimintoja. Kun AngularJS kรคy lรคpi HTML-koodia, se ensin lรถytรครค sivulta direktiivit ja jรคsentรครค sitten HTML-sivun niiden mukaisesti. Yksinkertainen esimerkki AngularJS-direktiivistรค, jonka olemme nรคhneet aiemmissa luvuissa, on "ng-model-direktiivi". Tรคtรค direktiiviรค kรคytetรครคn datamallin sitomiseen nรคkymรครคn.

Huomautus: Voit luoda HTML-sivulle perus-AngularJS-koodia ng-init-, ng-repeat- ja ng-model-direktiiveillรค ilman ohjaimia. Nรคiden direktiivien logiikka on AngularJS-tiedostossa, jonka tarjoaa GoogleOhjaimet ovat seuraavan tason AngularJS-ohjelmointirakenteita, jotka mahdollistavat liiketoimintalogiikan, mutta kuten mainittiin, sovelluksen ei tarvitse vรคlttรคmรคttรค olla ohjainta, jotta se olisi AngularJS-sovellus.

Mutta miten selain pรครคtyy kรคyttรคmรครคn sellaista?

Miten AngularJS-direktiivit toimivat HTML:ssรค

Kuten johdannossa mรครคrittelimme, AngularJS-direktiivi on tapa laajentaa funktion toiminnallisuutta HTMLKun sivu latautuu, AngularJS-kรครคntรคjรค kรคy lรคpi DOM:n, vertaa kutakin elementtiรค rekisterรถityihin direktiiveihin ja liittรครค lรถytรคmรคnsรค toiminnan.

angularjs sisรคltรครค kymmeniรค sisรครคnrakennettuja direktiivejรค, sekรค kaikki itse rekisterรถimรคsi direktiivit. Aloittelijat kohtaavat ensin neljรค alla selitettyรค esimerkkidirektiiviรค โ€“ ng-app, ng-init, ng-model ja ng-repeat. Ennen nรคitรค esimerkkejรค on syytรค tutustua neljรครคn tapaan, joilla direktiivi voidaan kirjoittaa.

Mitkรค ovat neljรค AngularJS-direktiivien tyyppiรค?

Direktiivi ei aina ole attribuutti. AngularJS-kรครคntรคjรค voi lรถytรครค vastaavan elementin nimen, attribuutin, luokan nimen tai kommentin perusteella, ja jokainen direktiivi mรครคrittelee, mitkรค muodot se hyvรคksyy sen kautta. restrict ominaisuus. Oletusarvo on EA, joten sekรค elementti- ettรค attribuuttisyntaksi toimivat, ellet toisin mรครคrรครค. Arvo on tรคrkein, kun kirjoitat oman direktiivin, koska kรครคntรคjรค jรคttรครค huomiotta kaikki lomakkeet, jotka rajoitusarvo sulkee pois.

raja-arvo Vastaava Esimerkki merkinnรคstรค Tyypillinen kรคyttรถ
E Elementin nimi Itsenรคiset lohkot, joilla on mallipohja
A Ominaisuus Kรคyttรคytymisen lisรครคminen olemassa olevaan elementtiin
C Luokan nimi Vanhat merkinnรคt, jotka eivรคt voi ottaa uusia mรครคritteitรค kรคyttรถรถn
M Kommentti Harvinainen, sรคilytetty taaksepรคin yhteensopivuuden vuoksi

๐Ÿ’ก Vinkki: Suosi elementtien ja attribuuttien syntaksia. virallinen AngularJS-direktiivin viite kรคsittelee luokka- ja kommenttilomakkeita perinteisinรค vaihtoehtoina. Alla olevat esimerkit kรคyttรคvรคt kaikki attribuuttisyntaksia.

ng-app AngularJS:ssรค

Tรคtรค kรคytetรครคn AngularJS-sovelluksen alustamiseen. Kun tรคmรค direktiivi on kรคytรถssรค HTML-sivulla, se kertoo AngularJS:lle, ettรค kyseinen HTML-sivu on AngularJS-sovellus.

Esimerkki ng-sovelluksesta

Alla oleva esimerkki nรคyttรครค, kuinka tavallisesta HTML-sovelluksesta tehdรครคn AngularJS-sovellus.

ng-app AngularJS:ssรค

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

โš ๏ธ Varoitus: Listaus sรคilyttรครค alkuperรคisen chrset="UTF 8", tรคsmรคlleen julkaistussa muodossa. Oikea attribuutti on charset="UTF-8".

Code Selitys:

  1. โ€ng-appโ€-direktiivi lisรคtรครคn div-tagiimme osoittamaan, ettรค kyseessรค on AngularJS-sovellus. Huomaa, ettรค ng-app-direktiiviรค voidaan soveltaa mihin tahansa tagiin, joten se voidaan sijoittaa myรถs body-tagiin.
  2. Koska olemme mรครคritelleet tรคmรคn sovelluksen AngularJS-sovellukseksi, voimme nyt hyรถdyntรครค AngularJS-toiminnallisuutta. Tรคssรค tapauksessa kรคytรคmme lausekkeita yksinkertaisesti kahden merkkijonon yhdistรคmiseen.

Jos koodi suoritetaan onnistuneesti, alla oleva tuloste tulee nรคkyviin.

lรคhtรถ:

ng-app AngularJS:ssรค

Tuloste nรคyttรครค lausekkeen tulosteen selvรคsti, mikรค oli mahdollista vain siksi, ettรค mรครคrittelimme sovelluksen AngularJS-sovellukseksi. Seuraava direktiivi toimittaa sen tiedot.

ng-init AngularJS:ssรค

Tรคtรค kรคytetรครคn sovellustietojen alustamiseen. Joskus sovelluksesi saattaa tarvita paikallisia tietoja, ja tรคmรค voidaan tehdรค ng-init-direktiivillรค.

Esimerkki ng-initistรค

Tรคssรค esimerkissรค aiomme luoda muuttujan nimeltรค "TutorialName" kรคyttรคmรคllรค ng-init-direktiiviรค ja nรคytรคmme tรคmรคn muuttujan arvon sivulla.

ng-init AngularJS:ssรค

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

  1. ng-init-direktiivi lisรคtรครคn div-tunnisteeseemme paikallisen muuttujan "TutorialName" mรครคrittรคmiseksi, ja tรคlle annettu arvo on "AngularJS".
  2. Kรคytรคmme AngularJS:ssรค lausekkeita nรคyttรครคksemme ng-init-direktiivissรค mรครคritellyn muuttujan "TutorialName" tulosteen.

Jos koodi suoritetaan onnistuneesti, alla oleva tuloste tulee nรคkyviin.

lรคhtรถ:

ng-init AngularJS:ssรค

Ulostulossa,

  • Tulos nรคyttรครค selkeรคsti lausekkeen, joka sisรคltรครค merkkijonon "AngularJS", tulos. Tรคmรค johtuu siitรค, ettรค merkkijono "AngularJS" on mรครคritetty muuttujaan "TutorialName" ng-init-osassa.

Seuraava direktiivi lรคhettรครค tiedot nรคytรถltรค takaisin malliin.

ng-malli AngularJS:ssรค

Ja lopuksi meillรค on ng-model-direktiivi, jota kรคytetรครคn HTML-kontrollin arvon sitomiseen sovellustietoihin.

Esimerkki ng-mallista

Tรคssรค esimerkissรค

  • Aiomme luoda 2 muuttujaa nimeltรค "mรครคrรค" ja "hinta". Nรคmรค muuttujat sidotaan kahteen tekstinsyรถttรถsรครคtimeen.
  • Nรคytรคmme sitten kokonaissumman, joka perustuu sekรค hinta- ettรค mรครคrรคarvojen kertomiseen.

ng-malli AngularJS:ssรค

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

  1. ng-init-direktiivi lisรคtรครคn div-tunnisteeseen mรครคrittelemรครคn 2 paikallista muuttujaa; yksi on nimeltรครคn "mรครคrรค" ja toinen on "hinta".
  2. Nyt kรคytรคmme ng-mallin direktiiviรค sitomaan tekstilaatikot "Ihmiset" ja "Rekisterรถintihinta" paikallisiin muuttujiimme "mรครคrรค" ja "hinta".
  3. Lopuksi nรคytรคmme kokonaissumman lausekkeen kautta, joka on mรครคrรค- ja hintamuuttujien kertolasku.

Jos koodi suoritetaan onnistuneesti, alla oleva tuloste tulee nรคkyviin.

lรคhtรถ:

ng-malli AngularJS:ssรค

  • Tulos nรคyttรครค selvรคsti ihmisten ja rekisterรถintihinnan arvojen kertoimen.

Jos nyt muutat tekstiruutujen Henkilรถmรครคrรค- ja Rekisterรถintihinta-arvoja, Kokonaissumma muuttuu automaattisesti.

ng-malli AngularJS:ssรค

  • Yllรค oleva tuloste osoittaa AngularJS:n datasidonnan tehokkuuden, joka saavutetaan kรคyttรคmรคllรค ng-mallin direktiivi.

Viimeinen neljรคstรค kรคsittelee useita arvoja samanaikaisesti.

ng-repeat AngularJS:ssรค

Tรคtรค kรคytetรครคn HTML-elementin toistamiseen. Alla oleva esimerkki nรคyttรครค kuinka kรคyttรครค ng-repeat direktiivi.

Esimerkki ng-toistosta

Tรคssรค esimerkissรค

  • Meillรค on joukko lukujen nimiรค taulukon muuttujassa ja
  • Kรคytรค sitten ng-repeat-direktiiviรค nรคyttรครคksesi jokaisen taulukon elementin luettelokohteena

ng-repeat AngularJS:ssรค

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

  1. ng-init-direktiivi lisรคtรครคn div-tunnisteeseemme mรครคrittelemรครคn muuttuja nimeltรค "chapters", joka on 3 merkkijonoa sisรคltรคvรค taulukkomuuttuja.
  2. ng-repeat -elementtiรค kรคytetรครคn ilmoittamalla rivimuuttuja nimeltรค "names" ja kรคymรคllรค lรคpi jokainen elementti lukutaulukossa.
  3. Lopuksi nรคytรคmme paikallisen rivimuuttujan 'names' arvon.

Jos koodi suoritetaan onnistuneesti, alla oleva tuloste tulee nรคkyviin.

lรคhtรถ:

ng-repeat AngularJS:ssรค

  • Yllรค oleva tulos osoittaa vain, ettรค ng-repeat-direktiivi otti jokaisen taulukon arvon, jota kutsutaan "luvuiksi", ja loi HTML-luettelokohteet jokaiselle taulukon kohteelle.

Nuo neljรค kattavat kรคynnistyksen, datan, sidonnan ja toiston. Alla oleva lista nรคyttรครค, mitรค seuraavaksi tapahtuu.

Muita yleisesti kรคytettyjรค sisรครคnrakennettuja AngularJS-direktiivejรค

Yllรค olevat neljรค direktiiviรค ovat lรคhtรถjoukko, eivรคt koko kirjastoa. Jokainen alla oleva merkintรค on attribuutti, jonka sijoitat suoraan sen ohjaamaan elementtiin.

  • ng-sidonta: Kirjoittaa laajuusarvon elementin tekstiin nรคyttรคmรคttรค lyhyesti raakoja aaltosulkeita latauksen yhteydessรค.
  • ng-if: Poistaa elementin DOM:sta, kun sen lauseke on epรคtosi, ja luo sen uudelleen, kun se on tosi.
  • ng-nรคytรค ja ng-piilota: Togglnรคkyvyys CSS:n avulla. Elementti pysyy DOM:ssa, joten toistuvat vaihdot maksavat vรคhemmรคn.
  • ng-luokka: Lisรครค tai poistaa CSS-luokkia lausekkeesta, jolloin tyyli seuraa mallia.
  • ng-klikkaus: Suorittaa lausekkeen tai vaikutusaluefunktion, kun kรคyttรคjรค napsauttaa elementtiรค.
  • ng-ohjain: Liittรครค ohjaimen merkintรคlohkoon, kun sivu on ng-init-lohkon ulkopuolella.
  • ng-poistettu kรคytรถstรค ja ng-vain lukeminen: Aseta vastaava lomakeattribuutti aina, kun niiden lauseke on tosi.

Alla olevat usein kysytyt kysymykset vastaavat useimmin tรคtรค luetteloa seuraaviin kysymyksiin.

UKK

AngularJS normalisoi attribuuttien nimet ennen niiden yhdistรคmistรค. Se poistaa kaikki x- tai data- etuliitteet ja muuntaa sitten yhdysviivan, kaksoispisteen tai alaviivan erottimet camel-kirjainkokoisiksi. Siksi data-ng-app, x-ng-app ja ng:app kaikki ratkaisevat saman ngApp-direktiivin.

Molemmat tulostavat laajuusarvon. Interpolointilauseke voi nรคyttรครค lyhyesti raa'at aaltosulkeet ennen kuin AngularJS:n latautuminen on valmis, kun taas ng-bind jรคttรครค elementin tyhjรคksi, kunnes kรครคnnรถs on valmis. ng-bind on parempi vaihtoehto tekstille, joka nรคkyy taitoksen ylรคpuolella.

Ei. AngularJS:n virallinen tuki pรครคttyi tammikuussa 2022, joten uusia korjauksia ei julkaista. Olemassa olevat sivut toimivat edelleen, mutta uudet projektit pitรคisi aloittaa modernilla Angularilla, jossa nรคistรค direktiiveistรค tulee komponentteja ja rakennedirektiivejรค, kuten *ngIf ja *ngFor.

Osittain. Avustajat, kuten GitHub Copilot Kirjoita ng-repeat uudelleen muotoon *ngFor ja ng-if muotoon *ngIf luotettavasti. Soveltuvuusalueen periytyminen, kaksisuuntaiset sidokset ja mukautetut linkkifunktiot vaativat edelleen ihmisen tarkistuksen ennen siirretyn koodin lรคhettรคmistรค.

Liitรค merkinnรคt, moduulin mรครคrittely ja konsolin tuloste kohtaan ChatGPT ja kysyรค, mikรค direktiivi ei lรถytรคnyt tรคsmรครค. Yleensรค se havaitsee puuttuvan ng-app-parametrin, vรครคrin kirjoitetun attribuutin tai restrict-arvon, joka estรครค valitsemasi syntaksin.

Tiivistรค tรคmรค viesti seuraavasti: