AngularJS изрази: ARRAY, обекти, $eval, низове [Примери]
Какво е Angular JS Expressions?
Изразите са променливи, които са дефинирани в двойните скоби {{ }}. Те се използват много често в Angular JS и ще ги видите в предишните ни уроци.
Обяснете изразите Angular.js с пример
AngularJS изразите са тези, които са записани в двойни скоби {{expression}}.
Синтаксис:
Прост пример за израз е {{5 + 6}}.
Angular.JS изразите се използват за свързване на данни към HTML по същия начин като директивата ng-bind. AngularJS показва данните точно на мястото, където е поставен изразът.
Нека да разгледаме пример за Angular.JS изрази.
В този пример просто искаме да покажем просто събиране на числа като израз.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/angular.min.js"></script> <h1> Guru99 Global Event</h1> <div ng-app=""> Addition : {{6+9}} </div> </body> </html>
Обяснение на кода:
- Директивата ng-app в нашия пример е празна, както е показано на екранната снимка по-горе. Това означава само, че няма модул за присвояване на контролери, директиви, услуги към кода.
- Добавяме прост израз, който разглежда събирането на 2 числа.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
От изхода,
- Вижда се, че се извършва събирането на двете числа 9 и 6 и се показва добавената стойност 15.
Angular.JS Numbers
Изразите могат да се използват и за работа с числа. Нека да разгледаме пример за Angular.JS изрази с числа.
В този пример искаме просто да покажем просто умножение на 2 числови променливи, наречени марж и печалба, и да покажем тяхната умножена стойност.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/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>
Обяснение на кода:
- Директивата ng-init се използва в angular.js за дефиниране на променливи и съответните им стойности в самия изглед. Това е нещо като дефиниране на локални променливи за кодиране във всяка програмен език. В този случай ние дефинираме 2 променливи, наречени марж и печалба, и им присвояваме стойности.
- След това използваме 2-те локални променливи и умножаваме техните стойности.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
От изхода,
- Може ясно да се види, че се извършва умножението на 2 числа 2 и 200 и се показва умножената стойност от 400.
AngularJS низове
Изразите могат да се използват и за работа с низове. Нека да разгледаме пример за Angular JS изрази с низове.
В този пример ще дефинираме 2 низа от „firstName“ и „lastName“ и ще ги покажем с помощта на съответните изрази.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/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>
Обяснение на кода:
- Директивата ng-init се използва за дефиниране на променливите firstName със стойността „Guru“ и променливата lastName със стойност „99“.
- След това използваме изрази на {{firstName}} и {{lastName}} за достъп до стойността на тези променливи и съответно да ги покажем в изгледа.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
От изхода може ясно да се види, че стойностите на firstName и lastName се показват на екрана.
Angular.JS обекти
Изразите могат да се използват за работа JavaСценарий предмети също.
Нека да разгледаме пример за Angular.JS изрази с javascript обекти. Javascript обект се състои от двойка име-стойност.
По-долу е даден пример за синтаксиса на javascript обект.
Синтаксис:
var car = {type:"Ford", model:"Explorer", color:"White"};
В този пример ще дефинираме един обект като обект на човек, който ще има 2 двойки ключови стойности на „firstName“ и „lastName“.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/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>
Обяснение на кода:
- Директивата ng-init се използва за дефиниране на обекта person, който от своя страна има двойки ключови стойности на firstName със стойност „Guru“ и променлива lastName със стойност „99“.
- След това използваме изрази на {{person.firstName}} и {{person.secondName}} за достъп до стойността на тези променливи и съответно да ги покажем в изгледа. Тъй като действителните променливи член са част от обекта person, те трябва да имат достъп до него с нотация точка (.), за да получат достъп до действителната си стойност.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
От изхода,
- Може ясно да се види, че стойностите на “firstName” и “secondName” се показват на екрана.
AngularJS масиви
Изразите могат да се използват и за работа с масиви. Нека да разгледаме пример за Angular JS изрази с масиви.
В този пример ще дефинираме масив, който ще съдържа оценките на ученик по 3 предмета. В изгледа ще покажем съответно стойността на тези знаци.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/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] }}<br> </div> </body> </html>
Обяснение на кода:
- Директивата ng-init се използва за дефиниране на масива с името „marks“ с 3 стойности от 1, 15 и 19.
- След това използваме изрази на марки [индекс] за достъп до всеки елемент от масива.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
От изхода може ясно да се види, че маркировките, които се показват, са дефинирани в масива.
Възможности и ограничения на AngularJS Expression
Angular.JS Expression възможности
- Ъгловите изрази са като JavaСкрипт изрази. Следователно той има същата мощност и гъвкавост.
- In JavaСкрипт, когато се опитате да оцените недефинирани свойства, той генерира ReferenceError или TypeError. В Angular оценката на израза е прощаваща и генерира undefined или null.
- Човек може да използва филтри в рамките на изрази, за да форматира данни, преди да ги покаже.
Ограничения на Angular JS Expression
- Понастоящем няма наличност за използване на условни изрази, цикли или изключения в Angular израз
- Не можете да декларирате функции в Angular израз, дори в директивата ng-init.
- Човек не може да създава регулярни изрази в ъглов израз. Регулярният израз е комбинация от символи и знаци, които се използват за намиране на низове като .*\.txt$. Такива изрази не могат да се използват в Angular JS изрази.
- Освен това не може да се използва или да се прави празнота в ъглов израз.
Разлика между израз и $eval
Функцията $eval позволява да се оценяват изрази от самия контролер. Така че докато изразите се използват за оценка в изгледа, $eval се използва във функцията на контролера.
Нека да разгледаме един прост пример за това.
В този пример,
Просто ще използваме функцията $eval, за да добавим 2 числа и да я направим достъпна в обекта на обхвата, така че да може да бъде показана в изгледа.
<!DOCTYPE html> <html> <head> <meta chrset="UTF 8"> <title>Event Registration</title> </head> <body> <script src="https://code.angularjs.org/1.6.9/angular-route.js"></script> <script src="https://code.angularjs.org/1.6.9/angular.min.js"></script> <script src="https://code.jquery.com/jquery-3.3.1.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>
Обяснение на кода:
- Първо дефинираме 2 променливи „a“ и „b“, всяка от които има стойност 1.
- Използваме функцията $scope.$eval, за да оценим добавянето на 2-те променливи и да я присвоим на променливата на обхвата 'value'.
- След това просто показваме стойността на променливата „стойност“ в изгледа.
Ако кодът се изпълни успешно, ще се покаже следният изход, когато стартирате кода си в браузъра.
Изход:
Горният изход показва изхода на израза, който е оценен в регулатор. Резултатите по-горе показват, че изразът $eval е използван за извършване на добавяне на 2 променливи на обхват „a и b“, като резултатът е изпратен и показан в изгледа.
Oбобщение
- Видяхме как изразите в Ъглова JS може да се използва за оценка на редовното JavaИзрази, подобни на скрипт, като просто събиране на числа.
- Директивата ng-init може да се използва за дефиниране на променливи в ред, които могат да се използват в изгледа.
- Изразите могат да бъдат направени да работят с примитивни типове като низове и числа.
- Изразите могат да се използват и за работа с други типове, като напр JavaСкриптови обекти и масиви.
- Изразите в Angular JS имат няколко ограничения, като например липсата на регулярни изрази или използването на функции, цикли или условни изрази.