Výrazy AngularJS: Pole, Objekty, $eval, Řetězce
⚡ Chytré shrnutí
Výrazy v AngularJS jsou fragmenty kódu umístěné uvnitř dvojitých závorek, které vážou data přímo do šablony. Vyhodnocují čísla, řetězce, objekty a pole a funkce $eval provádí stejné vyhodnocení uvnitř kontroleru.

Co jsou výrazy v AngularJS?
Výrazy jsou proměnné zapsané uvnitř dvojitých závorek {{ }}Jsou velmi běžně používány v AngularJS a objevují se v předchozích tutoriálech v této sérii.
⚠️ Oznámení podpory: AngularJS dosaženo konec životnosti k 31. prosinci 2021 a neobdrží žádné další záplaty ani bezpečnostní opravy. Níže uvedená syntaxe zůstává správná pro údržbu stávajících aplikací AngularJS 1.x; nové projekty by měly používat moderní ANGULAR, kde interpolační závorky stále existují, ale ng-init a $eval ne.
Vysvětlete výrazy AngularJS na příkladu
Výrazy AngularJS se píší uvnitř dvojitých závorek, jako například {{expression}}.
Syntaxe: jednoduchý příklad výrazu je {{5 + 6}}.
Výrazy AngularJS vážou data k HTML stejným způsobem jako direktiva ng-bind a AngularJS zobrazuje data přesně tam, kde je výraz umístěn.
V tomto příkladu si ukážeme jednoduché sčítání čísel jako výraz.
<!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 Vysvětlení:
- Direktiva ng-app je prázdná, což znamená, že žádný modul nedodává řadiče, směrnice, nebo služeb na tuto stránku.
- Jednoduchý výraz sečte dvě čísla.
Výstup:
Proběhne sečtení 9 a 6 a zobrazí se výsledek 15.
AngularJS Numbers
Výrazy pracují s čísly. Tento příklad násobí dvě číselné proměnné, margin a profita zobrazí produkt.
<!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 Vysvětlení:
- Direktiva ng-init definuje proměnné a jejich hodnoty v samotném zobrazení, podobně jako lokální proměnné v jakémkoli programovací jazyk. Tady
marginaprofitjsou deklarovány a přiřazeny. - Výraz pak vynásobí tyto dvě lokální proměnné.
Výstup:
Proběhne násobení 2 a 200 a zobrazí se součin 400.
AngularJS řetězce
Výrazy fungují také s řetězci. Tento příklad definuje firstName a lastName a zobrazuje obojí.
<!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 Vysvětlení:
- Direktiva ng-init definuje
firstNames hodnotou „Guru" alastNames hodnotou „99“. - Výrazy
{{firstName}}a{{lastName}}přečíst tyto proměnné a zobrazit je v pohledu.
Výstup:
Obě hodnoty se zobrazí na obrazovce.
Objekty AngularJS
Výrazy fungují s JavaScénář objekty, které se skládají z párů název-hodnota. Syntaxe JavaObjekt skriptu vypadá takto:
var car = {type: "Ford", model: "Explorer", color: "White"};
Tento příklad definuje person objekt obsahující dva páry klíč-hodnota, firstName a 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 Vysvětlení:
- Direktiva ng-init definuje objekt
persons páry klíč-hodnotafirstNamenastaveno na „Guru" alastNamenastaveno na „99“. - Výrazy
{{person.firstName}}a{{person.lastName}}přečíst tyto členy. Protože patří k objektu, je k dosažení jejich hodnot vyžadována tečková notace.
Výstup:
Hodnoty firstName a lastName objevit se na obrazovce.
Pole AngularJS
Výrazy fungují s poli. Tento příklad definuje pole obsahující známky studenta ze tří předmětů a zobrazuje každou hodnotu.
<!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 Vysvětlení:
- Direktiva ng-init definuje pole
marksse třemi hodnotami 1, 15 a 19. - Výrazy tvaru
marks[index]přečtěte si každý prvek.
Výstup:
Zobrazí se značky definované v poli.
Možnosti a omezení AngularJS Expression
Možnosti
- Výrazy AngularJS se podobají JavaSkriptovací výrazy a sdílejí mnoho stejných funkcí a flexibility.
- Kde JavaSkript vyvolává ReferenceError nebo TypeError u nedefinované vlastnosti, vyhodnocení v AngularJS je tolerantní a vrací undefined nebo null.
- Filtry lze použít uvnitř výrazu pro formátování dat před jejich zobrazením.
- Ternární operátor je podporován, takže
{{ isReady ? 'Yes' : 'No' }}je platný.
Omezení
- Smyčky a ošetření výjimek nelze použít uvnitř výrazu AngularJS. Podmíněná logika je omezena na ternární operátor;
ifvýpisy nejsou k dispozici. - Funkce nelze deklarovat ve výrazu, a to ani uvnitř direktivy ng-init.
- Regulární výrazy nelze vytvářet uvnitř výrazu. Regulární výraz je kombinace symbolů a znaků používaných k porovnávání řetězců, například
.*\.txt$a takové literály jsou odmítnuty. - Operátor čárky (
,) Avoidoperátor není povolen.
ng-bind vs. výrazové závorky: Které použít
Double Složené závorky a direktiva ng-bind produkují stejný vykreslený výstup, takže volba mezi nimi vypadá libovolně. Není. Obě se chovají odlišně v okamžiku, než AngularJS dokončí načítání, a tento rozdíl je viditelný pro osobu, která stránku používá.
| Vzhled | {{ expression }} | ng-bind |
|---|---|---|
| Napsal (a) | Obsah prvku | Atribut elementu |
| Před načtením AngularJS | Na obrazovce blikají surové rovnátka | Nic se nezobrazuje |
| čitelnost | Vyšší – hodnota je v řádku | Nižší — hodnota je skrytá v atributu |
| Více hodnot na prvek | Ano | Ne, pouze jedna vazba |
| Jednorázová vazba | Ano, s {{::value}} |
Ano, s ng-bind="::value" |
Krátký výskyt nezpracovaných závorek je známý jako záblesk neinterpolovaného obsahu a děje se tak proto, že prohlížeč vykreslí kód předtím, než ho AngularJS zkompiluje. Pro obsah viditelný nad ohybem použijte ng-bind nebo přidejte direktivu ng-cloak. Závorky zůstávají přehlednější a čitelnější volbou všude jinde, zejména tam, kde se uvnitř jednoho prvku objevuje několik hodnot.
Rozdíl mezi výrazem a $eval
Jedno $eval Funkce vyhodnocuje výrazy uvnitř kontroleru. Výrazy se vyhodnocují v zobrazení, zatímco $eval vyhodnocuje se v kódu kontroleru.
Tento příklad používá $eval sečíst dvě čísla a umístit výsledek na objekt scope, aby se v pohledu zobrazil.
<!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 Vysvětlení:
- Dvě proměnné rozsahu,
aab, každý má hodnotu 1. $scope.$evalvyhodnotí jejich součet a přiřadí výsledek proměnné rozsahu platnostivalue.- Zobrazení se poté zobrazí
value.
Výstup:
Výstup zobrazuje výraz vyhodnocený uvnitř kontrolor, přičemž součet dvou proměnných rozsahu je odeslán do zobrazení a zobrazen v něm.












