Платформа A2v10 довідкова система
EN


Шаблони. Властивості

Розділ властивостей дозволяє додати до елементів моделі додаткові властивості. Они можуть бути як скалярними (рядок, число), так і обчислюваними.

Обчислювані властивості являють собою потужний механізм, що дозволяє значно спростити реализацію складної бізнес-логіки програми. Така властивість являє собою функцію, яка викликається при спробі читання (або встановлення) властивості. Результат, що повертається функцією, розглядається як значення властивості. При розрахунках функція може звертатися до інших обчислюваних властивостей тощо Таким чином легко будувати обробники залежних даних без використання моделі подій.

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

Об'єкт, що описує властивості в шаблоні, є звичайним об'єктом JavaScript. Імена властивостей цього об'єкта являють собою повне ім'я властивості (включаючи ім'я типу об'єкта), а значення - скалярним типом, функцією або об'єктом.

Синтаксис

	

Правила найменування

Префікс властивості TypeName повинен співпадати з іменем типу, який задається при побудові моделі. За угодою імена типів починаються з заглавної літери "Т" (від слова Type).

Якщо обчислювана властивість має таке ж ім'я, як і властивість в моделі, то воно не додається до моделі, а замінює властивість моделі. Це призведе до того, що обчислюване значення буде збережене в моделі.

Якщо ім'я властивості починається з символів "$" або "_", то оно є внутрішнім і не бере участь в обміні даними між клиєнтом і сервером. Якщо ім'я властивості починається з символів "$$" то його зміна не встановлює прапорець $dirty для моделі.

Скалярні властивості

Значенням скалярної властивості завжди є примітивний тип JavaScript, такий як, наприклад, String, Number або Boolean. В модель буде додано властивість відповідного типу.

Обчислювані властивості

Значенням обчислюваної властивості є функція, яка буде обчислена при спробі звернення до властивості. Аргумент функції:

  • this - посилання на об'єкт, в який додається властивість.
Функція повинна повернути значення властивості.

Функція викликається тільки при зверненні до властивості. Якщо звернень нема, то функція ніколи викликатися не буде.

Звернення до обчислюваної властивості можуть виконуватися багаторазово і досить часто. Ніколи не використовуйте звернення до серверу в коді обчислюваних властивостей. Якщо потрібно - використовуйте кешування.

Зверніть увагу! Не використовуйте стрілочні функції при визначенні обчислюванихх властивостей. Стрілочні функції не мають власного значення this (вони використовують батьківський контекст), тому отримати посилання на об`єкт буде неможливо.

Обчислювані властивості з можливістю встановлення

На додаток до функції читання властивості (геттер) можна задати і функцію встановлення (сеттер). Ця функція буде викликана при спробі встановлення значення властивості. Аргументи функції:

  • this - посилання на об'єкт, в який додається властивість.
  • value - начення, що встановлюється.

Використовуйте властивості з сеттерами уважно і обережно. При цьому дуже легко отримати нескінченну рекурсію.

Приклад

Приклад шаблону документу з обчисленням суми по рядку і суми по документу. Нехай в моделі є документ з рядками, в кожному з яких є ціна і кількість. Потрібно автоматично розрахувати суму по рядку і суму по документу.