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.

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.
<!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:
- ng-app direktiiv on tรผhi, mis tรคhendab, et รผkski moodul ei varusta kontrollereid, direktiividvรตi teenuseid sellele lehele.
- Lihtne avaldis liidab kaks arvu.
Vรคljund:
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.
<!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:
- ng-init direktiiv defineerib muutujad ja nende vรครคrtused vaates endas, sarnaselt lokaalsete muutujatega mis tahes programmeerimiskeel. Siin
marginjaprofitdeklareeritakse ja mรครคratakse. - Seejรคrel korrutab avaldis need kaks lokaalset muutujat.
Vรคljund:
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.
<!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:
- ng-init direktiiv mรครคratleb
firstNamevรครคrtusega "Guru"JalastNamevรครคrtusega โ99โ. - Vรคljendid
{{firstName}}ja{{lastName}}Loe need muutujad ja kuva need vaates.
Vรคljund:
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.
<!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:
- ng-init direktiiv defineerib objekti
personvรตtme-vรครคrtuse paaridegafirstNameseatud vรครคrtusele โGuru"JalastNameseatud vรครคrtusele โ99โ. - 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:
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.
<!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:
- ng-init direktiiv defineerib massiivi
markskolme vรครคrtusega 1, 15 ja 19. - Vormi avaldised
marks[index]lugege iga elementi.
Vรคljund:
Massiivis mรครคratletud mรคrgid kuvatakse.
AngularJS-i ekspressioonivรตimalused ja piirangud
Vรตimed
- AngularJS-i avaldised sarnanevad JavaSkriptivรคljenditel ja neil on suur osa samast vรตimsusest ja paindlikkusest.
- 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.
- Filtreid saab avaldise sees rakendada andmete vormindamiseks enne nende kuvamist.
- Kolmikoperaator on toetatud, seega
{{ isReady ? 'Yes' : 'No' }}on kehtiv.
Piirangud
- AngularJS-i avaldise sees ei saa kasutada tsรผkleid ja erandite kรคsitlemist. Tingimusloogika on piiratud kolmikoperaatoriga;
ifavaldused pole saadaval. - Funktsioone ei saa avaldises deklareerida, isegi mitte ng-init direktiivi sees.
- 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. - Komaoperaator (
,) Javoidoperaatoril 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.
<!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:
- Kaks ulatusmuutujat,
ajab, igaรผks omab vรครคrtust 1. $scope.$evalhindab nende liitmist ja mรครคrab tulemuse ulatusmuutujalevalue.- Seejรคrel kuvatakse vaade
value.
Vรคljund:
Vรคljund nรคitab avaldist, mis on hinnatud seespool. kontroller, kusjuures kahe ulatusmuutuja summa saadetakse vaatesse ja kuvatakse seal.












