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.












