Об'єкт, що описує події в шаблоне, є звичайним об'єктом JavaScript. Імена властивостей цього об'єкта є іменами подій, а значення - функціями, які будуть викликані при виникненні події.
Імена подій формуються різними способами в залежності від типу події:
.constuct
.
Повний шлях до елементу даних фактично являє собою повне ім'я властивості об'єкта, починаючи від кореня моделі. Для вказання
елементу масиву використовується суфікс []
.
Синтаксис:
Ці події мають фіксовані імена.
Model.load
- модель завантажено.Model.unload
- модель вивантажена. Жодні дії вже неможливі. Частіше за все використовується для відписки
від подій глобальної шини подій.Model.saved
- модель збережено.Model.beforeSave
- перед зберіганням.Аргументи для подій моделі:
this
- корінь моделі даних (IRoot).model
- корінь моделі даних (IRoot).caller
- посилання на корінь моделі даних (IRoot) об'єкта, що викликає.
Наприклад, якщо це модель діалога, то
caller
буде посиланням на модель, з якої цей діалог було викликано.
Може використовуватися для взаємодії елементом, що викликає.
Для подій Model.saved
, Model.save
значення завжди буде
undefined
.
.construct
- об`єкт сстворено.
Префікс імені події являє собою ім'я типу об'єкта. В обробнику цієї події можна доповнити
утворений елемент новими властивостями. Однак,
для цього краще використовувати механізм властивостей (properites).
.change
- значення властивості змінено.
Префікс імені події являє собою повний шлях до властивості в моделі даних.
.changing
- значення властивості буде змінено.
Префікс імені події являє собою повний шлях до властивості в моделі даних.
Є можливість скасувати змінення.
Аргументи для події .construct
:
this
- корінь моделі даних (IRoot).elem
- створений елемент.prop
- ім'я властивості батьківського елементу, якому буде присвоєний створений об'єкт. Має
сенс для обробників створення елементів в MapObject
..changing
, .change
:
this
- корінь моделі даних (IRoot).elem
- елемент.newValue
- нове значення властивості.oldValue
- старе значення властивості.prop
- ім'я властивості, що змінюється..changing
:
Boolean
- суворе значення false
. Скасовує спробу змінення значення властивості. Будь-яке інше
значення дозволяє змінення.
Префікс імені для всіх подій масивів являє собою повний шлях до властивості в моделі.
[].adding
- перед додаванням елементу в масив.[].add
- елемент додано в масив.[].change
- змінено елемент масива.[].remove
- елемент видалено з масива.[].select
- елемент масива обрано.
Зверніть увагу! Події будуть генеруватися тільки тоді, коли для маніпуляції з масивами використовуються засоби платформи.
Якщо масив змінюється стандартними методами (наприклад push
, splice
), то події генеруватися не будуть.
Аргументи для подій масивів:
this
- корінь моделі даних (IRoot).arr
- масив, що змінюється.elem
- новий або видалений елемент..adding
.
Boolean
- суворе значення false
. Відміняє операцію додавання елементу в масив.Описані вище події є вбудованими. Однак, ніхто не забороняє використовувати власні події, які можуть більш точно описувати бізнес-логіку програми.
Такі події генеруються методом $emit кореневого об'єкта (IRoot) і можуть мати
довільне ім'я (звісно, воно не може співпадати з системними іменами). Методом $emit
також можна генерувати
і системні події.
Зверніть увагу! Модель подій в системі пов'язана з даними, а не з елементами користувацького інтерфейса. Іншими словами, події виникають тоді, коли змінюються дані. Виникнення подій жодним чином не пов'язане з користувацьким інтерфейсом. Фактично, користувацького інтерфейса може не бути взагалі.