Espressioni AngularJS: Array, Oggetti, $eval, Stringhe
โก Riepilogo intelligente
Le espressioni AngularJS sono frammenti di codice racchiusi tra doppie parentesi graffe che collegano i dati direttamente a un template. Valutano numeri, stringhe, oggetti e array, e la funzione $eval esegue la stessa valutazione dall'interno di un controller.

Che cosa sono le espressioni AngularJS?
Le espressioni sono variabili scritte tra doppie parentesi graffe {{ }}Sono molto comuni in AngularJS e compaiono nei tutorial precedenti di questa serie.
โ ๏ธ Avviso di assistenza: AngularJS ha raggiunto Fine della vita il 31 dicembre 2021 e non riceve ulteriori patch o correzioni di sicurezza. La sintassi seguente rimane corretta per la manutenzione delle applicazioni AngularJS 1.x esistenti; i nuovi progetti dovrebbero utilizzare la versione moderna. Angular, dove esistono ancora le parentesi graffe di interpolazione ma ng-init and $eval non.
Spiega le espressioni AngularJS con un esempio.
Le espressioni AngularJS sono scritte all'interno di doppie parentesi graffe, come in {{expression}}.
Sintassi: un semplice esempio di espressione รจ {{5 + 6}}.
Le espressioni AngularJS collegano i dati all'HTML nello stesso modo della direttiva ng-bind, e AngularJS visualizza i dati esattamente nel punto in cui รจ inserita l'espressione.
In questo esempio mostriamo una semplice addizione di numeri sotto forma di espressione.
<!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 Spiegazione:
- La direttiva ng-app รจ vuota, il che significa che nessun modulo fornisce controller, direttive, o servizi a questa pagina.
- Una semplice espressione somma due numeri.
Produzione:
Viene eseguita la somma di 9 e 6 e viene visualizzato il risultato, 15.
AngularJS Numbers
Le espressioni lavorano con i numeri. Questo esempio moltiplica due variabili numeriche, margin and profite visualizza il prodotto.
<!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 Spiegazione:
- La direttiva ng-init definisce le variabili e i loro valori nella vista stessa, proprio come le variabili locali in qualsiasi linguaggio di programmazione. Qui
marginandprofitvengono dichiarati e assegnati. - L'espressione moltiplica quindi queste due variabili locali.
Produzione:
Viene eseguita la moltiplicazione di 2 per 200 e il prodotto visualizzato รจ 400.
Stringhe AngularJS
Le espressioni funzionano anche con le stringhe. Questo esempio definisce firstName and lastName e li visualizza entrambi.
<!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 Spiegazione:
- La direttiva ng-init definisce
firstNamecon il valore โGuru" elastNamecon il valore โ99โ. - Le espressioni
{{firstName}}and{{lastName}}Leggi quelle variabili e visualizzale nella vista.
Produzione:
Entrambi i valori vengono visualizzati sullo schermo.
Oggetti AngularJS
Le espressioni funzionano con JavaCopione oggetti, che consistono in coppie nome-valore. La sintassi di un JavaL'oggetto script ha questo aspetto:
var car = {type: "Ford", model: "Explorer", color: "White"};
Questo esempio definisce un person oggetto contenente due coppie chiave-valore, firstName and 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 Spiegazione:
- La direttiva ng-init definisce l'oggetto
personcon le coppie chiave-valorefirstNameimpostato su "Guru" elastNameimpostato su โ99โ. - Le espressioni
{{person.firstName}}and{{person.lastName}}leggere quei membri. Poichรฉ appartengono all'oggetto, รจ necessaria la notazione con il punto per accedere ai loro valori.
Produzione:
I valori di firstName and lastName apparire sullo schermo.
Array AngularJS
Le espressioni funzionano con gli array. Questo esempio definisce un array contenente i voti di uno studente in tre materie e visualizza ciascun valore.
<!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 Spiegazione:
- La direttiva ng-init definisce l'array
markscon i tre valori 1, 15 e 19. - Espressioni della forma
marks[index]leggere ogni elemento.
Produzione:
Vengono visualizzati i marcatori definiti nell'array.
Funzionalitร e limitazioni dell'espressione AngularJS
Capabilities
- Le espressioni AngularJS assomigliano JavaLe espressioni di scripting condividono gran parte della stessa potenza e flessibilitร .
- Dove JavaLo script genera un ReferenceError o un TypeError su una proprietร non definita; la valutazione di AngularJS รจ permissiva e restituisce undefined o null.
- ร possibile applicare filtri all'interno di un'espressione per formattare i dati prima che vengano visualizzati.
- L'operatore ternario รจ supportato, quindi
{{ isReady ? 'Yes' : 'No' }}รจ valido.
limitazioni
- All'interno di un'espressione AngularJS non รจ possibile utilizzare cicli e gestione delle eccezioni. La logica condizionale รจ limitata all'operatore ternario;
ifLe dichiarazioni non sono disponibili. - Le funzioni non possono essere dichiarate all'interno di un'espressione, nemmeno all'interno di una direttiva ng-init.
- Le espressioni regolari non possono essere create all'interno di un'espressione. Un'espressione regolare รจ una combinazione di simboli e caratteri utilizzati per trovare corrispondenze con stringhe, come ad esempio
.*\.txt$e tali letterali vengono rifiutati. - L'operatore virgola (
,) e ilvoidGli operatori non sono autorizzati.
ng-bind vs parentesi graffe nelle espressioni: quale usare?
Double Le parentesi graffe e la direttiva ng-bind producono lo stesso output renderizzato, quindi la scelta tra le due sembra arbitraria. Non lo รจ. Le due si comportano in modo diverso un attimo prima che AngularJS abbia terminato il caricamento, e questa differenza รจ visibile a chi utilizza la pagina.
| Aspetto | {{ expression }} | ng-bind |
|---|---|---|
| Scritto in | Contenuto dell'elemento | Un attributo dell'elemento |
| Prima del caricamento di AngularJS | L'apparecchio ortodontico a vista appare sullo schermo | Non viene mostrato nulla |
| leggibilitร | Piรน alto โ il valore รจ in linea | Inferiore: il valore รจ nascosto in un attributo |
| Valori multipli per elemento | Si | No, un solo vincolo |
| vincolo unico | Sรฌ, con {{::value}} |
Sรฌ, con ng-bind="::value" |
La breve apparizione delle parentesi graffe non interpolate รจ nota come "flash di contenuto non interpolato" e si verifica perchรฉ il browser renderizza il markup prima che AngularJS lo compili. Utilizza `ng-bind` o aggiungi la direttiva `ng-cloak` per il contenuto visibile sopra la parte visibile della pagina. Le parentesi graffe rimangono la scelta piรน chiara e leggibile in tutti gli altri casi, in particolare quando piรน valori compaiono all'interno di un singolo elemento.
Differenza tra espressione e $eval
Migliori $eval La funzione valuta le espressioni dall'interno del controller. Le espressioni vengono valutate nella vista, mentre $eval valuta nel codice del controller.
Questo esempio usa $eval sommare due numeri e inserire il risultato nell'oggetto scope in modo che la vista possa visualizzarlo.
<!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 Spiegazione:
- Due variabili di ambito,
aandbciascuno di essi ha il valore 1. $scope.$evalvaluta la loro somma e assegna il risultato alla variabile scopevalue.- La vista mostra quindi
value.
Produzione:
L'output mostra l'espressione valutata all'interno del controllore, con la somma delle due variabili di ambito inviate e visualizzate nella vista.












