AngularJS-uttrykk: Array, objekter, $eval, strenger
โก Smart oppsummering
AngularJS-uttrykk er kodefragmenter plassert i doble klammeparenteser som binder data direkte inn i en mal. De evaluerer tall, strenger, objekter og arrayer, og $eval-funksjonen utfรธrer den samme evalueringen fra innsiden av en kontroller.

Hva er AngularJS-uttrykk?
Uttrykk er variabler skrevet i doble klammeparenteser {{ }}De brukes veldig ofte i AngularJS, og vises gjennom de tidligere veiledningene i denne serien.
โ ๏ธ Stรธttemelding: AngularJS nรฅdde levetidens slutt 31. desember 2021 og mottar ingen ytterligere oppdateringer eller sikkerhetsrettinger. Syntaksen nedenfor forblir nรธyaktig for vedlikehold av eksisterende AngularJS 1.x-applikasjoner; nye prosjekter bรธr bruke moderne Vinkel, hvor interpolasjonsparenteser fortsatt finnes, men ng-init og $eval ikke.
Forklar AngularJS-uttrykk med et eksempel
AngularJS-uttrykk skrives i doble klammeparenteser, som i {{expression}}.
Syntaks: et enkelt eksempel pรฅ et uttrykk er {{5 + 6}}.
AngularJS-uttrykk binder data til HTML pรฅ samme mรฅte som ng-bind-direktivet, og AngularJS viser dataene nรธyaktig der uttrykket er plassert.
I dette eksemplet viser vi en enkel addisjon av tall som et uttrykk.
<!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 Forklaring:
- ng-app-direktivet er tomt, som betyr at ingen modul forsyner kontrollere, direktivereller tjenester til denne siden.
- Et enkelt uttrykk adderer to tall.
Utgang:
Addisjonen av 9 og 6 finner sted, og resultatet, 15, vises.
AngularJS Numbers
Uttrykk fungerer med tall. Dette eksemplet multipliserer to tallvariabler, margin og profit, og viser produktet.
<!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 Forklaring:
- ng-init-direktivet definerer variabler og deres verdier i selve visningen, omtrent som lokale variabler i enhver annen programmeringssprรฅk. Her
marginogprofiter erklรฆrt og tildelt. - Uttrykket multipliserer deretter disse to lokale variablene.
Utgang:
Multiplikasjonen av 2 og 200 finner sted, og produktet 400 vises.
AngularJS-strenger
Uttrykk fungerer ogsรฅ med strenger. Dette eksemplet definerer firstName og lastName og viser begge deler.
<!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 Forklaring:
- ng-init-direktivet definerer
firstNamemed verdien ยซGuru"OglastNamemed verdien ยซ99ยป. - Uttrykkene
{{firstName}}og{{lastName}}les disse variablene og vis dem i visningen.
Utgang:
Begge verdiene vises pรฅ skjermen.
AngularJS-objekter
Uttrykk fungerer med JavaScript objekter, som bestรฅr av navn-verdi-par. Syntaksen til en JavaSkriptobjektet ser slik ut:
var car = {type: "Ford", model: "Explorer", color: "White"};
Dette eksemplet definerer en person objekt som inneholder to nรธkkelverdipar, firstName og 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 Forklaring:
- ng-init-direktivet definerer objektet
personmed nรธkkelverdi-parenefirstNamesatt til ยซGuru"OglastNamesatt til ยซ99ยป. - Uttrykkene
{{person.firstName}}og{{person.lastName}}les disse medlemmene. Fordi de tilhรธrer objektet, kreves punktnotasjon for รฅ nรฅ verdiene deres.
Utgang:
Verdiene av firstName og lastName vises pรฅ skjermen.
AngularJS-arrayer
Uttrykk fungerer med matriser. Dette eksemplet definerer en matrise som inneholder en students karakterer i tre fag og viser hver verdi.
<!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 Forklaring:
- ng-init-direktivet definerer arrayet
marksmed de tre verdiene 1, 15 og 19. - Uttrykk av formen
marks[index]les hvert element.
Utgang:
Merkene som er definert i tabellen vises.
AngularJS-uttrykksmuligheter og begrensninger
Ekspertiser
- AngularJS-uttrykk ligner JavaSkriptuttrykk deler mye av den samme kraften og fleksibiliteten.
- Hvor JavaSkriptet genererer en ReferenceError eller TypeError pรฅ en udefinert egenskap, AngularJS-evalueringen er tilgivende og gir udefinert eller null.
- Filtre kan brukes i et uttrykk for รฅ formatere data fรธr de vises.
- Den ternรฆre operatoren stรธttes, sรฅ
{{ isReady ? 'Yes' : 'No' }}er gyldig.
Begrensninger
- Lรธkker og unntakshรฅndtering kan ikke brukes i et AngularJS-uttrykk. Betinget logikk er begrenset til den ternรฆre operatoren;
ifuttalelser er ikke tilgjengelige. - Funksjoner kan ikke deklareres i et uttrykk, ikke engang i et ng-init-direktiv.
- Regulรฆre uttrykk kan ikke opprettes inne i et uttrykk. Et regulรฆrt uttrykk er en kombinasjon av symboler og tegn som brukes til รฅ matche strenger, for eksempel
.*\.txt$, og slike bokstaver blir avvist. - Kommaoperatoren (
,) Ogvoidoperatรธr er ikke tillatt.
ng-bind vs. uttrykksregulering: Hvilken skal man bruke
Double klammeparenteser og ng-bind-direktivet produserer den samme gjengitte utdataen, sรฅ valget mellom dem ser vilkรฅrlig ut. Det er det ikke. De to oppfรธrer seg forskjellig i รธyeblikket fรธr AngularJS er ferdig lastet, og den forskjellen er synlig for personen som bruker siden.
| Aspekt | {{ expression }} | ng-bind |
|---|---|---|
| Skrevet i | Elementinnhold | Et elementattributt |
| Fรธr AngularJS laster | Rรฅ tannregulering blinker pรฅ skjermen | Ingenting vises |
| lesbarhet | Hรธyere โ verdien ligger i linje | Lavere โ verdien er skjult i et attributt |
| Flere verdier per element | Ja | Nei, kun รฉn binding |
| Engangsbinding | Ja, med {{::value}} |
Ja, med ng-bind="::value" |
Den korte opptredenen av rรฅ klammeparenteser er kjent som ยซflash of uninterpolated contentยป (glimtet av uinterpolert innhold), og det skjer fordi nettleseren gjengir markupen fรธr AngularJS kompilerer den. Bruk ng-bind, eller legg til ng-cloak-direktivet, for innhold som er synlig over fold-en. Klammeparenteser er fortsatt det tydeligere og mer lesbare valget overalt ellers, spesielt der flere verdier vises i ett element.
Forskjellen mellom uttrykk og $eval
Ocuco $eval funksjonen evaluerer uttrykk fra innsiden av kontrolleren. Uttrykk evalueres i visningen, mens $eval evalueres i kontrollerkode.
Dette eksemplet bruker $eval รฅ legge sammen to tall og plassere resultatet pรฅ omfangsobjektet slik at visningen kan vise det.
<!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 Forklaring:
- To omfangsvariabler,
aogb, hver har verdien 1. $scope.$evalevaluerer addisjonen deres og tilordner resultatet til omfangsvariabelenvalue.- Visningen vises deretter
value.
Utgang:
Utdataene viser uttrykket som er evaluert inni controller, med summen av de to omfangsvariablene som sendes til og vises i visningen.












