Вирази AngularJS: масиви, об'єкти, $eval, рядки

⚡ Розумний підсумок

Вирази AngularJS – це фрагменти коду, поміщені в подвійні дужки, які безпосередньо зв'язують дані з шаблоном. Вони обчислюють числа, рядки, об'єкти та масиви, а функція $eval виконує ту саму обчислення зсередини контролера.

  • 🧩 Синтаксис зв'язування: Double Фігурні дужки відображають значення там, де знаходиться вираз, даючи той самий результат, що й директива ng-bind.
  • 🔢 Підтримувані типи: Numbers, струни, JavaОб'єкти скриптів, до яких здійснюється доступ за допомогою крапкової нотації, та масиви, до яких здійснюється доступ за допомогою індексу, обчислюються правильно.
  • 🏷️ Вбудовані змінні: Директива ng-init оголошує змінні рівня перегляду, які вирази можуть зчитувати без контролера.
  • 🛡️ Прощальна оцінка: Невизначені властивості повертають undefined, а не просто викидають ReferenceError JavaСценарій би підняв.
  • 🚫 Жорсткі обмеження: Цикли, винятки, оголошення функцій, регулярні вирази та оператори коми та void недоступні.
  • Оцінка контролера: $scope.$eval обчислює рядок виразу в коді контролера та надає результат представленню.
  • ⚠️ Статус підтримки: Життєвий цикл AngularJS завершився 31 грудня 2021 року та не отримує подальших патчів безпеки.

Вирази AngularJS

Що таке вирази AngularJS?

Вирази – це змінні, записані всередині подвійних дужок {{ }}Вони дуже часто використовуються в AngularJS та з'являються в попередніх навчальних посібниках цієї серії.

⚠️ Повідомлення служби підтримки: Досягнуто AngularJS кінець терміну служби 31 грудня 2021 року і не отримує подальших виправлень чи виправлень безпеки. Наведений нижче синтаксис залишається точним для підтримки існуючих програм AngularJS 1.x; нові проекти повинні використовувати сучасні Angular, де інтерполяційні дужки все ще існують, але ng-init та $eval не робити.

Поясніть вирази AngularJS на прикладі

Вирази AngularJS записуються всередині подвійних дужок, як у {{expression}}.

Синтаксис: простий приклад виразу - {{5 + 6}}.

Вирази AngularJS прив'язують дані до HTML так само, як і директива ng-bind, і AngularJS відображає дані саме там, де розміщено вираз.

У цьому прикладі ми показуємо просте додавання чисел як вираз.

Вирази AngularJS

<!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 Пояснення:

  1. Директива ng-app порожня, що означає, що жоден модуль не надає контролери, директиви, або послуги на цю сторінку.
  2. Простий вираз додає два числа.

вихід:

Вирази AngularJS

Відбувається додавання 9 та 6, і на екрані відображається результат 15.

AngularJS Numbers

Вирази працюють з числами. У цьому прикладі множиться дві числові змінні, margin та profit, і відображає продукт.

AngularJS Numbers

<!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 Пояснення:

  1. Директива ng-init визначає змінні та їхні значення у самому представленні, подібно до локальних змінних у будь-якому мова програмування. Тут margin та profit оголошуються та призначаються.
  2. Потім вираз множить ці дві локальні змінні.

вихід:

AngularJS Numbers

Відбувається множення 2 на 200, і на екрані відображається добуток, 400.

Рядки AngularJS

Вирази також працюють з рядками. У цьому прикладі визначено firstName та lastName і відображає обидва.

Рядки AngularJS

<!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 Пояснення:

  1. Директива ng-init визначає firstName зі значенням «Guru"І lastName зі значенням «99».
  2. Вирази {{firstName}} та {{lastName}} зчитати ці змінні та відобразити їх у поданні.

вихід:

Рядки AngularJS

Обидва значення відображаються на екрані.

Об'єкти AngularJS

Вирази працюють з JavaScript об'єкти, що складаються з пар ім'я-значення. Синтаксис JavaОб'єкт скрипта виглядає так:

var car = {type: "Ford", model: "Explorer", color: "White"};

Цей приклад визначає a person об'єкт, що містить дві пари ключ-значення, firstName та lastName.

Об'єкти AngularJS

<!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 Пояснення:

  1. Директива ng-init визначає об'єкт person з парами ключ-значення firstName встановлено на «Guru"І lastName встановлено на «99».
  2. Вирази {{person.firstName}} та {{person.lastName}} зчитати ці члени. Оскільки вони належать до об'єкта, для досягнення їхніх значень потрібна крапкова нотація.

вихід:

Об'єкти AngularJS

Значення firstName та lastName з'являться на екрані.

Масиви AngularJS

Вирази працюють з масивами. У цьому прикладі визначено масив, що містить оцінки учня з трьох предметів і відображає кожне значення.

Масиви AngularJS

<!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 Пояснення:

  1. Директива ng-init визначає масив marks з трьома значеннями 1, 15 та 19.
  2. Вирази виду marks[index] прочитайте кожен елемент.

вихід:

Масиви AngularJS

Відображаються позначки, визначені в масиві.

Можливості та обмеження AngularJS Expression

Можливості

  1. Вирази AngularJS нагадують JavaВирази сценаріїв мають багато однакових можливостей та гнучкості.
  2. де JavaСкрипт викликає ReferenceError або TypeError для властивості undefined, обчислення AngularJS прощає помилки та повертає undefined або null.
  3. Фільтри можна застосовувати всередині виразу для форматування даних перед їх відображенням.
  4. Тернарний оператор підтримується, тому {{ isReady ? 'Yes' : 'No' }} є дійсним.

Недоліки

  1. Цикли та обробку винятків не можна використовувати всередині виразу AngularJS. Умовна логіка обмежена тернарним оператором; if заяви недоступні.
  2. Функції не можна оголошувати у виразі, навіть у директиві ng-init.
  3. Регулярні вирази не можна створювати всередині виразу. Регулярний вираз – це комбінація символів, що використовуються для зіставлення рядків, таких як .*\.txt$, і такі літерали відхиляються.
  4. Оператор коми (,) І void оператору не дозволено.

ng-bind проти фігурних дужок-виразів: що використовувати

Double Фігурні дужки та директива ng-bind створюють однаковий вивід, тому вибір між ними виглядає довільним. Це не так. Вони поводяться по-різному в момент, коли AngularJS завершує завантаження, і ця різниця помітна для користувача сторінки.

Аспект {{ expression }} ng-bind
Написано в Вміст елемента Атрибут елемента
Перед завантаженням AngularJS Необроблені брекети блимають на екрані Нічого не показано
читабельність Вище — значення знаходиться в рядку Нижнє — значення приховано в атрибуті
Кілька значень на елемент Так Ні, лише одне обв'язування
Одноразове зв'язування Так, с {{::value}} Так, с ng-bind="::value"

Короткочасна поява необроблених фігурних дужок відома як спалах неінтерпольованого контенту, і це відбувається тому, що браузер відтворює розмітку до того, як AngularJS її скомпілює. Використовуйте ng-bind або додайте директиву ng-cloak для контенту, видимого над згином. Фігурні дужки залишаються чіткішим та читабельнішим вибором скрізь, особливо там, де в одному елементі з'являється кілька значень.

Різниця між виразом і $eval

Команда $eval Функція обчислює вирази зсередини контролера. Вирази обчислюються у вигляді, тоді як $eval обчислюється в коді контролера.

У цьому прикладі використовується $eval додати два числа та розмістити результат на об'єкті області видимості, щоб представлення могло його відобразити.

Різниця між виразом і $eval

<!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 Пояснення:

  1. Дві змінні області видимості, a та b, кожен має значення 1.
  2. $scope.$eval обчислює їх додавання та призначає результат змінній області видимості value.
  3. Потім відображається вигляд value.

вихід:

Різниця між виразом і $eval

Вивід показує вираз, обчислений всередині контролер, із сумою двох змінних області видимості, що надсилаються та відображаються у поданні.

Поширені запитання

Початок виразу з двох двокрапок, як у {{::name}}, припиняє спостереження за ним після визначення значення. Це видаляє спостерігач і знижує вартість дайджесту на сторінках з багатьма статичними прив'язками.

$eval негайно оцінює рядок відносно сфера. $parse повертає функцію повторного використання для багаторазового обчислення. $interpolate обробляє цілий рядок шаблону, що містить фігурні дужки, а не окремий вираз.

Переважно. AI Інструменти зберігають фігурні дужки та переписують фільтри як канали, але змінні ng-init не мають еквівалента в Angular і їх необхідно переміщувати до класу компонента вручну.

Інструменти штучного інтелекту сканують шаблони на наявність викликів функцій всередині прив'язок, які повторно виконуються на кожному циклі дайджесту, та пропонують або кешувати результат в області видимості, або перейти на одноразову прив'язку.

Оцінювання в AngularJS навмисно прощає недоліки. Відсутня властивість повертає значення undefined, яке відображатиметься як порожній рядок, тому порожнє значення зазвичай означає друкарську помилку в шляху до властивості, а не помилку виконання.

Підсумуйте цей пост за допомогою: