AngularJS-lausekkeet: Taulukko, Objektit, $eval, Merkkijonot

โšก ร„lykรคs yhteenveto

AngularJS-lausekkeet ovat koodinpรคtkiรค, jotka on sijoitettu kaksoissulkeiden sisรครคn ja jotka sitovat tiedot suoraan mallipohjaan. Ne arvioivat numeroita, merkkijonoja, objekteja ja taulukoita, ja $eval-funktio suorittaa saman arvioinnin ohjaimen sisรคltรค.

  • ๐Ÿงฉ Sidontasyntaksi: Double aaltosulkeet renderรถivรคt arvon lausekkeen kohdalle, antaen saman tuloksen kuin ng-bind-direktiivi.
  • ๐Ÿ”ข Tuetut tyypit: Numbers, jouset, JavaPistemerkinnรคllรค kรคsitellyt komentosarjaobjektit ja indeksin avulla kรคsitellyt taulukot evaluoituvat oikein.
  • ๐Ÿท๏ธ Sisรคiset muuttujat: ng-init-direktiivi mรครคrittelee nรคkymรคtason muuttujat, joita lausekkeet voivat sitten lukea ilman ohjainta.
  • ๐Ÿ›ก๏ธ Anteeksiantava arviointi: Mรครคrittelemรคttรถmรคt ominaisuudet tuottavat tulokseksi undefined pelkรคn ReferenceError-virheen sijaan. JavaSkripti nostaisi.
  • ๐Ÿšซ Kovat rajat: Silmukat, poikkeukset, funktioiden mรครคrittelyt, sรครคnnรถlliset lausekkeet sekรค pilkku- ja tyhjรคoperaattorit eivรคt ole kรคytettรคvissรค.
  • โš™๏ธ Ohjaimen arviointi: $scope.$eval arvioi lausekemerkkijonon ohjainkoodissa ja nรคyttรครค tuloksen nรคkymรคssรค.
  • โš ๏ธ Tuen tila: AngularJS:n elinkaari pรครคttyi 31. joulukuuta 2021, eikรค sille ole enรครค saatavilla tietoturvapรคivityksiรค.

AngularJS-lausekkeet

Mitรค ovat AngularJS-lausekkeet?

Lausekkeet ovat muuttujia, jotka kirjoitetaan hakasulkeiden sisรครคn {{ }}Niitรค kรคytetรครคn hyvin yleisesti AngularJS:ssรค, ja niitรค esiintyy tรคmรคn sarjan aiemmissa tutoriaaleissa.

โš ๏ธ Tukitiedote: AngularJS saavutettu kรคyttรถiรคn pรครคttyessรค 31. joulukuuta 2021 eikรค saa uusia korjauksia tai tietoturvakorjauksia. Alla oleva syntaksi pysyy oikein olemassa olevien AngularJS 1.x -sovellusten yllรคpidossa; uusien projektien tulisi kรคyttรครค moderneja Kulma-, jossa interpolointisulkeet ovat edelleen olemassa, mutta ng-init ja $eval ร„lรค.

Selitรค AngularJS-lausekkeet esimerkin avulla

AngularJS-lausekkeet kirjoitetaan hakasulkeiden sisรครคn, kuten {{expression}}.

Syntaksi: Yksinkertainen esimerkki lausekkeesta on {{5 + 6}}.

AngularJS-lausekkeet sitovat dataa HTML-koodiin samalla tavalla kuin ng-bind-direktiivi, ja AngularJS nรคyttรครค datan tรคsmรคlleen siihen kohtaan, mihin lauseke sijoitetaan.

Tรคssรค esimerkissรค nรคytรคmme yksinkertaisen numeroiden yhteenlaskun lausekkeena.

AngularJS-lausekkeet

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

    <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

    <h1>Guru99 Global Event</h1>

    <div ng-app="">
        Addition : {{6+9}}
    </div>

</body>
</html>

Code Selitys:

  1. ng-app-direktiivi on tyhjรค, mikรค tarkoittaa, ettรค mikรครคn moduuli ei syรถtรค ohjaimia, direktiivientai palveluita tรคlle sivulle.
  2. Yksinkertainen lauseke laskee yhteen kaksi lukua.

lรคhtรถ:

AngularJS-lausekkeet

Lukujen 9 ja 6 yhteenlasku suoritetaan ja tulos 15 nรคytetรครคn.

angularjs Numbers

Lausekkeet toimivat numeroiden kanssa. Tรคssรค esimerkissรค kerrotaan kaksi numeromuuttujaa, margin ja profitja nรคyttรครค tuotteen.

angularjs Numbers

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

    <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

    <h1>Guru99 Global Event</h1>

    <div ng-app="" ng-init="margin=2;profit=200">
        Total profit margin

        {{margin*profit}}
    </div>

</body>
</html>

Code Selitys:

  1. ng-init-direktiivi mรครคrittelee muuttujat ja niiden arvot itse nรคkymรคssรค, aivan kuten paikalliset muuttujat missรค tahansa ohjelmointikieli. Tรคssรค margin ja profit ilmoitetaan ja osoitetaan.
  2. Lauseke kertoo sitten nรคmรค kaksi paikallista muuttujaa.

lรคhtรถ:

angularjs Numbers

Luvun 2 ja 200 kertolasku suoritetaan ja tulo 400 nรคytetรครคn.

AngularJS kielet

Lausekkeet toimivat myรถs merkkijonojen kanssa. Tรคmรค esimerkki mรครคrittelee firstName ja lastName ja nรคyttรครค molemmat.

AngularJS kielet

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

    <script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

    <h1>Guru99 Global Event</h1>

    <div ng-app="" ng-init="firstName='Guru';lastName='99'">
        First Name : {{firstName}}<br>
        Last Name : {{lastName}}
    </div>

</body>
</html>

Code Selitys:

  1. ng-init-direktiivi mรครคrittelee firstName arvolla "Guru"Ja lastName arvolla โ€99โ€.
  2. Lausekkeet {{firstName}} ja {{lastName}} lue nuo muuttujat ja nรคytรค ne nรคkymรคssรค.

lรคhtรถ:

AngularJS kielet

Molemmat arvot nรคkyvรคt nรคytรถllรค.

AngularJS-objektit

Lausekkeet toimivat seuraavien kanssa: JavaKรคsikirjoitus objekteja, jotka koostuvat nimi-arvo-pareista. Objektin syntaksi JavaSkriptiobjekti nรคyttรครค tรคltรค:

var car = {type: "Ford", model: "Explorer", color: "White"};

Tรคmรค esimerkki mรครคrittelee person kaksi avain-arvo-paria sisรคltรคvรค objekti, firstName ja lastName.

AngularJS-objektit

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

<script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

<h1>Guru99 Global Event</h1>

<div ng-app="" ng-init="person={firstName:'Guru',lastName:'99'}">
    First Name : {{person.firstName}}<br>
    Last Name : {{person.lastName}}
</div>

</body>
</html>

Code Selitys:

  1. ng-init-direktiivi mรครคrittelee objektin person avain-arvo-parien kanssa firstName asetettu arvoon "Guru"Ja lastName asetettu arvoon "99".
  2. Lausekkeet {{person.firstName}} ja {{person.lastName}} lue nuo jรคsenet. Koska ne kuuluvat objektiin, niiden arvojen saavuttamiseksi tarvitaan pistemerkintรค.

lรคhtรถ:

AngularJS-objektit

Arvot firstName ja lastName nรคkyvรคt ruudulla.

AngularJS-taulukot

Lausekkeet toimivat taulukoiden kanssa. Tรคmรค esimerkki mรครคrittelee taulukon, joka sisรคltรครค opiskelijan arvosanat kolmesta oppiaineesta ja nรคyttรครค kunkin arvon.

AngularJS-taulukot

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

<script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

<h1>Guru99 Global Event</h1>

<div ng-app="" ng-init="marks=[1,15,19]">
    Student Marks<br>
    Subject1 : {{marks[0]}}<br>
    Subject2 : {{marks[1]}}<br>
    Subject3 : {{marks[2]}}
</div>

</body>
</html>

Code Selitys:

  1. ng-init-direktiivi mรครคrittelee taulukon marks kolmella arvolla 1, 15 ja 19.
  2. Lomakkeen ilmaisut marks[index] lue jokainen elementti.

lรคhtรถ:

AngularJS-taulukot

Taulukossa mรครคritellyt merkit nรคytetรครคn.

AngularJS Expression -ominaisuudet ja rajoitukset

Kyvyt

  1. AngularJS-lausekkeet muistuttavat JavaSkriptilausekkeet ja jakavat paljon samaa tehoa ja joustavuutta.
  2. Missรค JavaSkripti aiheuttaa ReferenceError- tai TypeError-virheen mรครคrittelemรคttรถmรคlle ominaisuudelle, AngularJS-evaluointi on anteeksiantava ja tuottaa arvon undefined tai null.
  3. Suodattimia voidaan kรคyttรครค lausekkeen sisรคllรค tietojen muotoilemiseksi ennen niiden nรคyttรคmistรค.
  4. Kolmiosainen operaattori on tuettu, joten {{ isReady ? 'Yes' : 'No' }} on kelvollinen.

Rajoitukset

  1. Silmukoita ja poikkeusten kรคsittelyรค ei voida kรคyttรครค AngularJS-lausekkeen sisรคllรค. Ehdollinen logiikka rajoittuu kolmiosaiseen operaattoriin; if lausuntoja ei ole saatavilla.
  2. Funktioita ei voi deklaroida lausekkeessa, ei edes ng-init-direktiivin sisรคllรค.
  3. Sรครคnnรถllisiรค lausekkeita ei voi luoda lausekkeen sisรคllรค. Sรครคnnรถllinen lauseke on symbolien ja merkkien yhdistelmรค, jota kรคytetรครคn merkkijonojen yhdistรคmiseen, kuten .*\.txt$, ja tรคllaiset literaalit hylรคtรครคn.
  4. Pilkkuoperaattori (,) ja void operaattori ei ole sallittu.

ng-bind vs. lausekesulkeet: kumpaa kรคyttรครค

Double aaltosulkeet ja ng-bind-direktiivi tuottavat saman renderรถidyn tulosteen, joten valinta niiden vรคlillรค nรคyttรครค mielivaltaiselta. Se ei ole. Ne kรคyttรคytyvรคt eri tavalla ennen kuin AngularJS on latautunut, ja tรคmรค ero on nรคkyvissรค sivua kรคyttรคvรคlle henkilรถlle.

Aspect {{ expression }} ng-sidonta
Kirjoitettu sisรครคn Elementin sisรคltรถ Elementin attribuutti
Ennen AngularJS:n lataamista Raa'at hammasraudat vilkkuvat nรคytรถllรค Mitรครคn ei nรคytetรค
luettavuus Korkeampi โ€” arvo on samassa linjassa Alempi โ€” arvo on piilotettu attribuuttiin
Useita arvoja elementtiรค kohden Kyllรค Ei, vain yksi sidonta
Kertaluonteinen sidonta Kyllรค, kanssa {{::value}} Kyllรค, kanssa ng-bind="::value"

Raakojen aaltosulkeiden lyhytaikainen ilmestyminen tunnetaan interpoloimattoman sisรคllรถn vรคlรคhdyksenรค, ja se tapahtuu, koska selain renderรถi merkinnรคn ennen kuin AngularJS kรครคntรครค sen. Kรคytรค ng-bind-komentoa tai lisรครค ng-cloak-direktiivi, jos haluat sisรคllรถn nรคkyvรคn ylรคosassa. Aaltosulkeet ovat edelleen selkeรคmpi ja luettavampi vaihtoehto kaikkialla muualla, erityisesti silloin, kun yhden elementin sisรคllรค on useita arvoja.

Ero lausekkeen ja $evalin vรคlillรค

$eval funktio evaluoi lausekkeita ohjaimen sisรคltรค. Lausekkeet evaluoituvat nรคkymรคssรค, kun taas $eval evaluoituu ohjainkoodissa.

Tรคssรค esimerkissรค kรคytetรครคn $eval kahden luvun yhteenlasku ja tuloksen sijoittaminen scope-objektiin, jotta nรคkymรค voi nรคyttรครค sen.

Ero lausekkeen ja $evalin vรคlillรค

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

<script src="https://code.angularjs.org/1.8.3/angular.min.js"></script>

<div ng-app="sampleApp" ng-controller="AngularController">
    <h1>Guru99 Global Event</h1>
    {{value}}
</div>

<script>
    var sampleApp = angular.module('sampleApp', []);
    sampleApp.controller('AngularController', function($scope) {
        $scope.a = 1;
        $scope.b = 1;

        $scope.value = $scope.$eval('a+b');
    });
</script>

</body>
</html>

Code Selitys:

  1. Kaksi laajuusmuuttujaa, a ja b, jokainen pitรครค arvoa 1.
  2. $scope.$eval laskee niiden yhteenlaskun ja sijoittaa tuloksen laajuusmuuttujaan value.
  3. Nรคkymรค tulee sitten nรคkyviin value.

lรคhtรถ:

Ero lausekkeen ja $evalin vรคlillรค

Tuloste nรคyttรครค lausekkeen, joka lasketaan funktion sisรคllรค. ohjain, ja kahden laajuusmuuttujan summa lรคhetetรครคn nรคkymรครคn ja nรคytetรครคn siinรค.

UKK

Lausekkeen etuliite kahdella kaksoispisteellรค, kuten {{::name}}, lopettaa sen tarkkailun, kun arvo on ratkaistu. Tรคmรค poistaa tarkkailijan ja alentaa tiivistelmรคn kustannuksia sivuilla, joilla on paljon staattisia sidoksia.

$eval arvioi merkkijonon vรคlittรถmรคsti merkkijonoa vasten laajuus. $parse palauttaa uudelleenkรคytettรคvรคn funktion toistuvaa arviointia varten. $interpolate kรคsittelee kokonaisen aaltosulkeita sisรคltรคvรคn mallimerkkijonon yksittรคisen lausekkeen sijaan.

Enimmรคkseen. AI tyรถkalut sรคilyttรคvรคt aaltosulkeet ja kirjoittavat suodattimet uudelleen putkiksi, mutta ng-init-muuttujilla ei ole Angular-vastinetta ja ne on siirrettรคvรค komponenttiluokkaan manuaalisesti.

Tekoรคlytyรถkalut skannaavat mallipohjia sidontojen sisรคltรคmien funktiokutsujen varalta, jotka suoritetaan uudelleen jokaisella tiivistesyklillรค, ja ehdottavat joko tuloksen tallentamista vรคlimuistiin laajuuskohdassa tai vaihtamista kertakรคyttรถiseen sidontaan.

AngularJS-evaluointi on tarkoituksella anteeksiantavaa. Puuttuva ominaisuus tuottaa arvon undefined, joka renderรถidรครคn tyhjรคnรค merkkijonona, joten tyhjรค arvo tarkoittaa yleensรค kirjoitusvirhettรค ominaisuuspolussa eikรค ajonaikaista virhettรค.

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