AngularJS-expressies: Array, Objecten, $eval, Strings
โก Slimme samenvatting
AngularJS-expressies zijn codefragmenten tussen dubbele accolades die gegevens rechtstreeks in een template binden. Ze evalueren getallen, strings, objecten en arrays, en de `$eval`-functie voert dezelfde evaluatie uit vanuit een controller.

Wat zijn AngularJS-expressies?
Expressies zijn variabelen die tussen dubbele accolades staan. {{ }}Ze worden veelvuldig gebruikt binnen AngularJS en komen in de eerdere tutorials van deze serie al aan bod.
โ ๏ธ Ondersteuningsbericht: AngularJS bereikte einde levensduur op 31 december 2021 en ontvangt geen verdere patches of beveiligingsupdates meer. De onderstaande syntax blijft correct voor het onderhouden van bestaande AngularJS 1.x-applicaties; voor nieuwe projecten dient een modernere syntax te worden gebruikt. Angular, waar interpolatiehaakjes nog steeds bestaan, maar ng-init en $eval Niet doen.
Leg AngularJS-expressies uit aan de hand van een voorbeeld.
AngularJS-expressies worden tussen dubbele accolades geschreven, zoals in {{expression}}.
Syntax: Een eenvoudig voorbeeld van een uitdrukking is {{5 + 6}}.
AngularJS-expressies koppelen gegevens aan HTML op dezelfde manier als de ng-bind-richtlijn, en AngularJS geeft de gegevens precies weer op de plaats waar de expressie is geplaatst.
In dit voorbeeld laten we een eenvoudige optelling van getallen zien als een uitdrukking.
<!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 Uitleg:
- De ng-app-richtlijn is leeg, wat betekent dat er geen module controllers levert. richtlijnen, of diensten die aan deze pagina zijn gekoppeld.
- Een eenvoudige uitdrukking telt twee getallen bij elkaar op.
Output:
De getallen 9 en 6 worden bij elkaar opgeteld en het resultaat, 15, wordt weergegeven.
angularjs Numbers
Expressies werken met getallen. In dit voorbeeld worden twee numerieke variabelen vermenigvuldigd. margin en profiten toont het product.
<!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 Uitleg:
- De `ng-init`-richtlijn definieert variabelen en hun waarden in de view zelf, net zoals lokale variabelen in elke andere view. programmeertaal. Hier
marginenprofitworden gedeclareerd en toegewezen. - De uitdrukking vermenigvuldigt vervolgens die twee lokale variabelen.
Output:
De vermenigvuldiging van 2 en 200 vindt plaats en het product, 400, wordt weergegeven.
AngularJS-reeksen
Expressies werken ook met tekenreeksen. Dit voorbeeld definieert firstName en lastName en toont beide.
<!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 Uitleg:
- De ng-init-richtlijn definieert
firstNamemet de waarde โGuru"EnlastNamemet de waarde "99". - De uitdrukkingen
{{firstName}}en{{lastName}}Lees die variabelen uit en toon ze in de weergave.
Output:
Beide waarden verschijnen op het scherm.
AngularJS-objecten
Uitdrukkingen werken met JavaScript objecten, die bestaan โโuit naam-waardeparen. De syntaxis van een JavaHet scriptobject ziet er als volgt uit:
var car = {type: "Ford", model: "Explorer", color: "White"};
Dit voorbeeld definieert een person object dat twee sleutel-waardeparen bevat, firstName en 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 Uitleg:
- De ng-init-richtlijn definieert het object.
personmet de sleutel-waardeparenfirstNameingesteld op "Guru"EnlastNameingesteld op โ99โ. - De uitdrukkingen
{{person.firstName}}en{{person.lastName}}Lees die leden. Omdat ze bij het object horen, is puntnotatie nodig om hun waarden te bereiken.
Output:
De waarden van firstName en lastName verschijnen op het scherm.
AngularJS-arrays
Expressies werken met arrays. Dit voorbeeld definieert een array met de cijfers van een student voor drie vakken en geeft elke waarde weer.
<!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 Uitleg:
- De ng-init-richtlijn definieert de array.
marksmet de drie waarden 1, 15 en 19. - Uitdrukkingen van de vorm
marks[index]Lees elk element.
Output:
De in de matrix gedefinieerde markeringen worden weergegeven.
AngularJS Expressiemogelijkheden en beperkingen
Mogelijkheden
- AngularJS-expressies lijken op JavaScriptuitdrukkingen bieden grotendeels dezelfde mogelijkheden en flexibiliteit.
- Waar JavaAls het script een ReferenceError of TypeError genereert voor een niet-gedefinieerde eigenschap, is de evaluatie in AngularJS tolerant en retourneert deze undefined of null.
- Filters kunnen binnen een expressie worden toegepast om gegevens te formatteren voordat ze worden weergegeven.
- De ternaire operator wordt ondersteund, dus
{{ isReady ? 'Yes' : 'No' }}is geldig.
Beperkingen
- Lussen en foutafhandeling kunnen niet binnen een AngularJS-expressie worden gebruikt. Voorwaardelijke logica is beperkt tot de ternaire operator;
ifEr zijn geen overzichten beschikbaar. - Functies kunnen niet in een expressie worden gedeclareerd, zelfs niet binnen een ng-init-richtlijn.
- Reguliere expressies kunnen niet binnen een expressie worden gemaakt. Een reguliere expressie is een combinatie van symbolen en tekens die worden gebruikt om tekenreeksen te matchen, zoals bijvoorbeeld:
.*\.txt$En dergelijke letterlijke interpretaties worden verworpen. - De komma-operator (
,) en devoidOperators zijn niet toegestaan.
ng-bind versus expressiehaakjes: welke te gebruiken?
Double De `branchs` en de `ng-bind` directive produceren dezelfde gerenderde output, waardoor de keuze tussen beide willekeurig lijkt. Dat is het echter niet. De twee gedragen zich anders in de periode voordat AngularJS volledig is geladen, en dat verschil is zichtbaar voor de gebruiker van de pagina.
| Aspect | {{ expression }} | ng-bind |
|---|---|---|
| Geschreven in | Elementinhoud | Een elementattribuut |
| Voordat AngularJS laadt | Onbewerkte beugels flitsen op het scherm. | Er wordt niets getoond |
| leesbaarheid | Hoger โ de waarde ligt in lijn | Lager โ de waarde is verborgen in een attribuut |
| Meerdere waarden per element | Ja | Nee, slechts รฉรฉn binding. |
| Eenmalige binding | Ja, met {{::value}} |
Ja, met ng-bind="::value" |
Het kortstondig verschijnen van onbewerkte accolades staat bekend als de flits van niet-geรฏnterpoleerde inhoud, en dit gebeurt omdat de browser de markup weergeeft voordat AngularJS deze compileert. Gebruik ng-bind of voeg de ng-cloak-richtlijn toe voor inhoud die boven de vouw zichtbaar is. Accolades blijven de duidelijkere en beter leesbare keuze op alle andere plaatsen, met name wanneer meerdere waarden in รฉรฉn element voorkomen.
Verschil tussen expressie en $eval
De $eval De functie evalueert expressies vanuit de controller. Expressies worden geรซvalueerd in de view, terwijl $eval wordt geรซvalueerd in de controllercode.
Dit voorbeeld gebruikt $eval Twee getallen optellen en het resultaat op het scope-object plaatsen, zodat de weergave het kan tonen.
<!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 Uitleg:
- Twee bereikvariabelen,
aenb, die elk de waarde 1 bevatten. $scope.$evalevalueert hun optelling en wijst het resultaat toe aan de bereikvariabele.value.- De weergave toont vervolgens
value.
Output:
De uitvoer toont de expressie die binnenin wordt geรซvalueerd. controleur, waarbij de som van de twee bereikvariabelen wordt verzonden naar en weergegeven in de weergave.












