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รค.

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.
<!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:
- ng-app-direktiivi on tyhjรค, mikรค tarkoittaa, ettรค mikรครคn moduuli ei syรถtรค ohjaimia, direktiivientai palveluita tรคlle sivulle.
- Yksinkertainen lauseke laskee yhteen kaksi lukua.
lรคhtรถ:
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.
<!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:
- ng-init-direktiivi mรครคrittelee muuttujat ja niiden arvot itse nรคkymรคssรค, aivan kuten paikalliset muuttujat missรค tahansa ohjelmointikieli. Tรคssรค
marginjaprofitilmoitetaan ja osoitetaan. - Lauseke kertoo sitten nรคmรค kaksi paikallista muuttujaa.
lรคhtรถ:
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.
<!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:
- ng-init-direktiivi mรครคrittelee
firstNamearvolla "Guru"JalastNamearvolla โ99โ. - Lausekkeet
{{firstName}}ja{{lastName}}lue nuo muuttujat ja nรคytรค ne nรคkymรคssรค.
lรคhtรถ:
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.
<!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:
- ng-init-direktiivi mรครคrittelee objektin
personavain-arvo-parien kanssafirstNameasetettu arvoon "Guru"JalastNameasetettu arvoon "99". - Lausekkeet
{{person.firstName}}ja{{person.lastName}}lue nuo jรคsenet. Koska ne kuuluvat objektiin, niiden arvojen saavuttamiseksi tarvitaan pistemerkintรค.
lรคhtรถ:
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.
<!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:
- ng-init-direktiivi mรครคrittelee taulukon
markskolmella arvolla 1, 15 ja 19. - Lomakkeen ilmaisut
marks[index]lue jokainen elementti.
lรคhtรถ:
Taulukossa mรครคritellyt merkit nรคytetรครคn.
AngularJS Expression -ominaisuudet ja rajoitukset
Kyvyt
- AngularJS-lausekkeet muistuttavat JavaSkriptilausekkeet ja jakavat paljon samaa tehoa ja joustavuutta.
- Missรค JavaSkripti aiheuttaa ReferenceError- tai TypeError-virheen mรครคrittelemรคttรถmรคlle ominaisuudelle, AngularJS-evaluointi on anteeksiantava ja tuottaa arvon undefined tai null.
- Suodattimia voidaan kรคyttรครค lausekkeen sisรคllรค tietojen muotoilemiseksi ennen niiden nรคyttรคmistรค.
- Kolmiosainen operaattori on tuettu, joten
{{ isReady ? 'Yes' : 'No' }}on kelvollinen.
Rajoitukset
- Silmukoita ja poikkeusten kรคsittelyรค ei voida kรคyttรครค AngularJS-lausekkeen sisรคllรค. Ehdollinen logiikka rajoittuu kolmiosaiseen operaattoriin;
iflausuntoja ei ole saatavilla. - Funktioita ei voi deklaroida lausekkeessa, ei edes ng-init-direktiivin sisรคllรค.
- 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. - Pilkkuoperaattori (
,) javoidoperaattori 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.
<!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:
- Kaksi laajuusmuuttujaa,
ajab, jokainen pitรครค arvoa 1. $scope.$evallaskee niiden yhteenlaskun ja sijoittaa tuloksen laajuusmuuttujaanvalue.- Nรคkymรค tulee sitten nรคkyviin
value.
lรคhtรถ:
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รค.












