AngularJS izrazi: niz, objekti, $eval, stringovi
⚡ Pametni sažetak
AngularJS izrazi su fragmenti koda smješteni unutar dvostrukih zagrada koje izravno povezuju podatke u predložak. Oni procjenjuju brojeve, stringove, objekte i nizove, a funkcija $eval izvodi istu procjenu unutar kontrolera.
Što su AngularJS izrazi?
Izrazi su varijable napisane unutar dvostrukih zagrada {{ }}Vrlo se često koriste unutar AngularJS-a i pojavljuju se u ranijim tutorijalima u ovoj seriji.
⚠️ Obavijest za podršku: AngularJS dosegnut kraj životnog vijeka 31. prosinca 2021. i ne prima daljnje zakrpe ili sigurnosne ispravke. Sintaksa u nastavku ostaje točna za održavanje postojećih AngularJS 1.x aplikacija; novi projekti trebali bi koristiti moderne Kutni, gdje interpolacijske zagrade još uvijek postoje, ali ng-init i $eval nemoj.
Objasnite AngularJS izraze s primjerom
AngularJS izrazi se pišu unutar dvostrukih zagrada, kao u {{expression}}.
Sintaksa: jednostavan primjer izraza je {{5 + 6}}.
AngularJS izrazi povezuju podatke s HTML-om na isti način kao i direktiva ng-bind, a AngularJS prikazuje podatke točno tamo gdje je izraz postavljen.
U ovom primjeru prikazujemo jednostavno zbrajanje brojeva kao izraz.
<!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 Objašnjenje:
- Direktiva ng-app je prazna, što znači da nijedan modul ne isporučuje kontrolere, direktive, ili usluge na ovu stranicu.
- Jednostavan izraz zbraja dva broja.
Izlaz:
Zbrajaju se brojevi 9 i 6, a rezultat, 15, prikazuje se na zaslonu.
AngularJS Numbers
Izrazi rade s brojevima. Ovaj primjer množi dvije brojevne varijable, margin i profiti prikazuje proizvod.
<!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 Objašnjenje:
- Direktiva ng-init definira varijable i njihove vrijednosti u samom pogledu, slično kao lokalne varijable u bilo kojem programski jezik, Ovdje
marginiprofitsu deklarirani i dodijeljeni. - Izraz zatim množi te dvije lokalne varijable.
Izlaz:
Izvršava se množenje broja 2 i 200 i prikazuje se produkt, 400.
AngularJS nizovi
Izrazi također rade s nizovima znakova. Ovaj primjer definira firstName i lastName i prikazuje oboje.
<!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 Objašnjenje:
- Direktiva ng-init definira
firstNames vrijednošću "Guru"IlastNames vrijednošću „99“. - Izrazi
{{firstName}}i{{lastName}}pročitajte te varijable i prikažite ih u pogledu.
Izlaz:
Obje vrijednosti se prikazuju na ekranu.
AngularJS objekti
Izrazi rade s JavaScript objekti, koji se sastoje od parova ime-vrijednost. Sintaksa JavaObjekt skripte izgleda ovako:
var car = {type: "Ford", model: "Explorer", color: "White"};
Ovaj primjer definira person objekt koji sadrži dva para ključ-vrijednost, firstName i 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 Objašnjenje:
- Direktiva ng-init definira objekt
persons parovima ključ-vrijednostfirstNamepostavljeno na "Guru"IlastNamepostavljeno na „99“. - Izrazi
{{person.firstName}}i{{person.lastName}}pročitajte te članove. Budući da pripadaju objektu, potrebna je točkasta notacija za dosezanje njihovih vrijednosti.
Izlaz:
Vrijednosti od firstName i lastName pojaviti se na ekranu.
AngularJS nizovi
Izrazi rade s nizovima. Ovaj primjer definira niz koji sadrži ocjene učenika iz tri predmeta i prikazuje svaku vrijednost.
<!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 Objašnjenje:
- Direktiva ng-init definira niz
markss tri vrijednosti 1, 15 i 19. - Izrazi oblika
marks[index]pročitajte svaki element.
Izlaz:
Prikazuju se oznake definirane u nizu.
AngularJS Expression mogućnosti i ograničenja
Sposobnosti
- AngularJS izrazi nalikuju JavaIzrazi skripte dijele mnogo iste snage i fleksibilnosti.
- Gdje JavaSkripta podiže ReferenceError ili TypeError na nedefiniranom svojstvu, AngularJS evaluacija oprašta probleme i vraća undefined ili null.
- Filtri se mogu primijeniti unutar izraza za formatiranje podataka prije nego što se prikažu.
- Ternarni operator je podržan, tako da
{{ isReady ? 'Yes' : 'No' }}vrijedi.
Ograničenja
- Petlje i rukovanje iznimkama ne mogu se koristiti unutar AngularJS izraza. Uvjetna logika ograničena je na ternarni operator;
ifizjave nisu dostupne. - Funkcije se ne mogu deklarirati unutar izraza, čak ni unutar ng-init direktive.
- Regularni izrazi ne mogu se stvarati unutar izraza. Regularni izraz je kombinacija simbola i znakova koji se koriste za podudaranje nizova, kao što su
.*\.txt$, a takvi literali se odbacuju. - Operator zareza (
,) Ivoidoperateru nije dopušteno.
ng-bind vs. izrazne zagrade: koje koristiti
Double Zagrade i direktiva ng-bind proizvode isti prikazani izlaz, pa izbor između njih izgleda proizvoljno. Nije. Njih dvoje se ponašaju drugačije u trenutku prije nego što AngularJS završi s učitavanjem, a ta razlika je vidljiva osobi koja koristi stranicu.
| Aspekt | {{ expression }} | ng-bind |
|---|---|---|
| Napisano u | Sadržaj elementa | Atribut elementa |
| Prije učitavanja AngularJS-a | Sirove proteze bljeskaju na ekranu | Ništa se ne prikazuje |
| čitljivost | Viša — vrijednost se nalazi u retku | Niža — vrijednost je skrivena u atributu |
| Više vrijednosti po elementu | Da | Ne, samo jedno vezivanje |
| Jednokratno vezanje | Da, sa {{::value}} |
Da, sa ng-bind="::value" |
Kratkotrajna pojava sirovih zagrada poznata je kao bljesak neinterpoliranog sadržaja, a događa se zato što preglednik renderira oznaku prije nego što je AngularJS kompajlira. Koristite ng-bind ili dodajte direktivu ng-cloak za sadržaj vidljiv iznad pregiba. Zagrade ostaju jasniji i čitljiviji izbor svugdje drugdje, posebno tamo gdje se nekoliko vrijednosti pojavljuje unutar jednog elementa.
Razlika između izraza i $eval
The $eval Funkcija procjenjuje izraze unutar kontrolera. Izrazi se procjenjuju u pogledu, dok $eval evaluira u kodu kontrolera.
Ovaj primjer koristi $eval zbrojiti dva broja i smjestiti rezultat na objekt opsega kako bi ga pogled mogao prikazati.
<!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 Objašnjenje:
- Dvije varijable opsega,
aib, svaki ima vrijednost 1. $scope.$evalprocjenjuje njihov zbroj i dodjeljuje rezultat varijabli opsegavalue.- Prikaz se zatim prikazuje
value.
Izlaz:
Izlaz prikazuje izraz izračunat unutar kontrolor, sa zbrojem dviju varijabli opsega poslanih i prikazanih u pogledu.













