AngularJS avaldised: massiiv, objektid, $eval, stringid

โšก Nutikas kokkuvรตte

AngularJS-i avaldised on koodilรตigud, mis paigutatakse topeltnurksulgudesse ja seovad andmed otse malliga. Need hindavad numbreid, stringe, objekte ja massiive ning funktsioon $eval teostab sama hindamise kontrolleri seest.

  • ๐Ÿงฉ Siduv sรผntaks: Double Sulgudes renderdatakse vรครคrtus seal, kus avaldis asub, andes sama tulemuse kui ng-bind direktiiv.
  • ๐Ÿ”ข Toetatud tรผรผbid: Numbers, keelpillid, JavaPunktide abil ligipรครคsetavad skriptiobjektid ja indeksi abil ligipรครคsetavad massiivid hindavad kรตik รตigesti.
  • ???? ๏ธ Tekstisisesed muutujad: ng-init direktiiv deklareerib vaate tasemel muutujad, mida avaldised saavad seejรคrel ilma kontrollerita lugeda.
  • ๐Ÿ›ก๏ธ Andestav hindamine: Mรครคratlemata omadused annavad tulemuseks mรครคratlemata vea, mitte ei viska lihtversiooni ReferenceError JavaSkript tรตstaks.
  • ๐Ÿšซ Kรตvad piirangud: Tsรผklid, erandid, funktsioonide deklaratsioonid, regulaaravaldised ning koma ja tรผhimiku operaatorid pole saadaval.
  • โš™๏ธ Kontrolleri hindamine: $scope.$eval hindab kontrolleri koodis olevat avaldisstringi ja kuvab tulemuse vaates.
  • โš ๏ธ Toe staatus: AngularJS-i eluiga lรตppes 31. detsembril 2021 ja sellele ei tehta enam turvaparandusi.

AngularJS vรคljendid

Mis on AngularJS avaldised?

Avaldised on muutujad, mis on kirjutatud topeltnurksulgude vahele {{ }}Neid kasutatakse AngularJS-is vรคga sageli ja need esinevad selle sarja varasemates รตpetustes.

โš ๏ธ Tugiteade: AngularJS jรตudis eluea lรตpp 31. detsembril 2021 ja ei saa edasisi parandusi ega turvaparandusi. Allolev sรผntaks jรครคb olemasolevate AngularJS 1.x rakenduste haldamiseks tรคpseks; uued projektid peaksid kasutama kaasaegseid nurgeline, kus interpolatsiooni sulud on endiselt olemas, aga ng-init ja $eval รคra.

Selgitage AngularJS-i avaldisi nรคite abil

AngularJS-i avaldised kirjutatakse topeltnurksulgude sisse, nagu nรคiteks {{expression}}.

sรผntaksit: Lihtne nรคide vรคljendist on {{5 + 6}}.

AngularJS-i avaldised seovad andmeid HTML-iga samamoodi nagu ng-bind direktiiv ning AngularJS kuvab andmed tรคpselt sinna, kuhu avaldis paigutatakse.

Selles nรคites demonstreerime lihtsat arvude liitmist avaldisena.

AngularJS vรคljendid

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

  1. ng-app direktiiv on tรผhi, mis tรคhendab, et รผkski moodul ei varusta kontrollereid, direktiividvรตi teenuseid sellele lehele.
  2. Lihtne avaldis liidab kaks arvu.

Vรคljund:

AngularJS vรคljendid

Toimub arvude 9 ja 6 liitmine ning tulemuseks kuvatakse 15.

AngularJS Numbers

Avaldised tรถรถtavad arvudega. See nรคide korrutab kaks arvmuutujat, margin ja profitja kuvab toote.

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 Selgitus:

  1. ng-init direktiiv defineerib muutujad ja nende vรครคrtused vaates endas, sarnaselt lokaalsete muutujatega mis tahes programmeerimiskeel. Siin margin ja profit deklareeritakse ja mรครคratakse.
  2. Seejรคrel korrutab avaldis need kaks lokaalset muutujat.

Vรคljund:

AngularJS Numbers

Toimub 2 korrutamine 200-ga ning kuvatakse korrutis 400.

AngularJS stringid

Avaldised tรถรถtavad ka stringidega. See nรคide defineerib firstName ja lastName ja kuvab mรตlemat.

AngularJS stringid

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

  1. ng-init direktiiv mรครคratleb firstName vรครคrtusega "Guru"Ja lastName vรครคrtusega โ€ž99โ€œ.
  2. Vรคljendid {{firstName}} ja {{lastName}} Loe need muutujad ja kuva need vaates.

Vรคljund:

AngularJS stringid

Mรตlemad vรครคrtused kuvatakse ekraanil.

AngularJS-i objektid

Avaldised tรถรถtavad koos JavaScript objektid, mis koosnevad nime-vรครคrtuse paaridest. Objekti sรผntaks JavaSkripti objekt nรคeb vรคlja selline:

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

See nรคide defineerib a person objekt, mis sisaldab kahte vรตtme-vรครคrtuse paari, firstName ja lastName.

AngularJS-i objektid

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

  1. ng-init direktiiv defineerib objekti person vรตtme-vรครคrtuse paaridega firstName seatud vรครคrtusele โ€žGuru"Ja lastName seatud vรครคrtusele โ€ž99โ€œ.
  2. Vรคljendid {{person.firstName}} ja {{person.lastName}} Loe neid liikmeid. Kuna need kuuluvad objekti, on nende vรครคrtuste saamiseks vaja punktidena esitatud sรผsteemi.

Vรคljund:

AngularJS-i objektid

Vรครคrtused firstName ja lastName ekraanile ilmuvad.

AngularJS massiivid

Avaldised tรถรถtavad massiividega. See nรคide defineerib massiivi, mis sisaldab รตpilase hindeid kolmes aines ja kuvab iga vรครคrtuse.

AngularJS massiivid

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

  1. ng-init direktiiv defineerib massiivi marks kolme vรครคrtusega 1, 15 ja 19.
  2. Vormi avaldised marks[index] lugege iga elementi.

Vรคljund:

AngularJS massiivid

Massiivis mรครคratletud mรคrgid kuvatakse.

AngularJS-i ekspressioonivรตimalused ja piirangud

Vรตimed

  1. AngularJS-i avaldised sarnanevad JavaSkriptivรคljenditel ja neil on suur osa samast vรตimsusest ja paindlikkusest.
  2. Kus JavaSkript tekitab mรครคratlemata atribuudi puhul ReferenceError vรตi TypeError vea, AngularJS-i hindamine on andestav ja annab tulemuseks mรครคratlemata vรตi null vea.
  3. Filtreid saab avaldise sees rakendada andmete vormindamiseks enne nende kuvamist.
  4. Kolmikoperaator on toetatud, seega {{ isReady ? 'Yes' : 'No' }} on kehtiv.

Piirangud

  1. AngularJS-i avaldise sees ei saa kasutada tsรผkleid ja erandite kรคsitlemist. Tingimusloogika on piiratud kolmikoperaatoriga; if avaldused pole saadaval.
  2. Funktsioone ei saa avaldises deklareerida, isegi mitte ng-init direktiivi sees.
  3. Regulaaravaldisi ei saa avaldise sees luua. Regulaaravaldis on sรผmbolite ja mรคrkide kombinatsioon, mida kasutatakse stringide sobitamiseks, nรคiteks .*\.txt$ja sellised literaalid lรผkatakse tagasi.
  4. Komaoperaator (,) Ja void operaatoril pole lubatud.

ng-bind vs. avaldisklambrid: millist kasutada

Double Sulgude ja ng-bind direktiivi renderdatud vรคljund on sama, seega tundub nendevaheline valik suvaline. See ei ole. Need kaks kรคituvad erinevalt enne AngularJS-i laadimise lรตppu ja see erinevus on lehte kasutavale inimesele nรคhtav.

Aspekt {{ expression }} ng-bind
Kirjutatud sisse Elemendi sisu Elemendi atribuut
Enne AngularJS laadimist Ekraanil vilguvad toored breketid Midagi ei kuvata
loetavus Kรตrgem โ€“ vรครคrtus on joonel Alumine โ€“ vรครคrtus on atribuudis peidetud
Mitu vรครคrtust elemendi kohta Jah Ei, ainult รผks sidumine
รœhekordne sidumine Jah, koos {{::value}} Jah, koos ng-bind="::value"

Toorsulgude lรผhikest ilmumist nimetatakse interpoleerimata sisu vรคlgatuseks ja see juhtub seetรตttu, et brauser renderdab mรคrgistuse enne, kui AngularJS selle kompileerib. Kasutage ng-bind kรคsku vรตi lisage ng-cloak direktiiv sisu nรคhtavaks muutmiseks voldi kohal. Sulud on selgem ja loetavam valik kรตikjal mujal, eriti kui รผhe elemendi sees on mitu vรครคrtust.

Avaldise ja $eval erinevus

. $eval funktsioon hindab avaldisi kontrolleri seest. Avaldised hindavad vaates, samas kui $eval hindab kontrolleri koodis.

See nรคide kasutab $eval kahe arvu liitmiseks ja tulemuse paigutamiseks ulatusobjektile, et vaade saaks seda kuvada.

Avaldise ja $eval erinevus

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

  1. Kaks ulatusmuutujat, a ja b, igaรผks omab vรครคrtust 1.
  2. $scope.$eval hindab nende liitmist ja mรครคrab tulemuse ulatusmuutujale value.
  3. Seejรคrel kuvatakse vaade value.

Vรคljund:

Avaldise ja $eval erinevus

Vรคljund nรคitab avaldist, mis on hinnatud seespool. kontroller, kusjuures kahe ulatusmuutuja summa saadetakse vaatesse ja kuvatakse seal.

KKK

Avaldise ette lisamine kahe kooloniga, nagu nรคiteks {{::name}}, lรตpetab selle jรคlgimise, kui vรครคrtus on lahendatud. See eemaldab vaatleja ja vรคhendab kokkuvรตtte maksumust lehtedel, millel on palju staatilisi sidemeid.

$eval hindab stringi koheselt a suhtes ulatus. $parse tagastab korduvkasutatava funktsiooni korduvaks hindamiseks. $interpolate kรคsitleb tervet malli stringi, mis sisaldab nurksulge, mitte รผhte avaldist.

Enamasti. AI tรถรถriistad jรคtavad sulgud alles ja kirjutavad filtrid torudena รผmber, kuid ng-init muutujatel puudub Angular-ekvivalent ja need tuleb kรคsitsi komponendiklassi teisaldada.

Tehisintellekti tรถรถriistad otsivad mallidest funktsioonikรตnesid seoste sees, mis kรคivituvad igal kokkuvรตtete tsรผklil, ning soovitavad kas tulemuse vahemรคllu salvestada vรตi lรผlituda รผhekordsele sidumisele.

AngularJS-i hindamine on tahtlikult andestav. Puuduv omadus annab tulemuseks โ€žundefinedโ€, mis renderdatakse tรผhja stringina, seega tรผhi vรครคrtus tรคhendab tavaliselt pigem atribuudi teekonna trรผkiviga kui kรคitusaja viga.

Vรตta see postitus kokku jรคrgmiselt: