Контролер відповідає за взаємодію моделі і виду. Будь-який об`єкт даних має властивість
$ctrl, яка повертає посилання на поточний контролер. Контролер це звичайний об`єкт JavaScript, що реалізує
наступний інтерфейс:
$invoke(command: string, arg: object, path?: string, opts?: { catchError: boolean }): PromiseВикликає серверну команду.
command - ім'я серверної команди (з розділу commands файлу model.json).
arg - довільний об`єкт аргумента. Властивості цього об'єкта будуть аргументами команди.
path? - необов'язково. URL для кінцевої точки. Якщо не вказано, буде виконаний в поточній кінцевій точці.
opts - об`єкт опцій. В поточній версії містить єдину властивість - catchError.
Якщо вона встановлена, то при виникненні помилок проміс буде відмінено і помилку можна буде
перехопити в коді за допомогою метода catch
(або в операторі try... catch для async ... await) проміса). За замовчуванням
система просто виводить повідомлення про помилку і не виконує проміс.
Promise.$reload(array?:object[]): Promise<void>
Оновлює модель або її частину.
array - не обов'язково. "Лінивий масив", що оновлюється.Якщо вказано аргумент, то оновлюються дані лінивого масиву, в іншому випадку - оновлюються дані всієї моделі. Деякі властивості моделі можна "захистити" від оновлення за допомогою опції шаблону bindOnce.
$msg(msg:string, title?:string, style?:string): Promise<object>
Метод виводить повідомлення в модальному вікні.
msg - текст повідомлення. Може містити html-розмітку.title - заголовок вікна повідомлення. За замовчуванням: рядок "Повідомлення" (в поточній локалізації).{Enum:['info', 'alert', 'confirm']} style - стиль. За замовчуванням: 'info'.Promise<any>, який буде виконаний після закриття вікна.Кнопки, які будуть розміщені у вікні, залежать від стилю повідомлення.
$confirm(msg:string | IConfrim): Promise<boolean|string>
Метод виводить запитання в модальному вікні.
msg - текст запиту. Може містити html-розмітку.title - заголовок вікна запиту. За замовчуванням: рядок "Підтвердження" (в поточній локалізації).{Enum:['info', 'alert', 'confirm']} style - стиль. За замовчуванням: 'confrim'.list - перелік додаткових рядків (наприклад, помилок).buttons - перелік кнопок відповіді Властивість 'text' це заголовок кнопки.
Властивість 'result' - результат, який поверне проміс після закриття вікна.
Якщо buttons не вказано, застосовуються стандартні кнопки Ok та Cancel (з урахуванням поточної локалізації).
Promise<boolean|string>, який буде виконаний після закриття вікна.
Кнопка відміни має містити значення result: false. Натискання на цю кнопку закриває вікно
без виконання промісу.
$asyncValid(command: string, arg: object): any | Promise
Виконує асинхронну перевірку. Для цього викликає команду на сервері, передаючи їй задані аргументи. Команда завжди виконується в поточній кінцевій точці.
Зверніть увагу, що результати виконання цієї команди можуть кешуватися, щоб уникнути зайвих звернень до серверу.
command - ім'я серверної команди (з розділу commands файлу model.json.
arg - довільний об`єкт аргументу. Властивості цього об'єкту будуть аргументами команди.
Promise. Зазвичай є значенням, що повертається, для асинхронного валідатора.Зазвичай команда викликає процедуру sql. Ця процедура має повернути один об'єкт Result
з єдиної властивістю Value типу bit aбо nvarchar.
$saveModified(message?:string, title?:string):boolean
Перевіряє, чи змінилася модель, і виводить повідомлення про необхідність збереження моделі.
message - повідомлення. Якщо не вказано (undefined), буде використано стандартне повідомлення.
"Елемент було змінено. Зберігти зміни?" (в поточній локалізації).
title - заголовок вікна повідомлення. Якщо не вказано (undefined), буде використано
стандартний заголовок "Підтвердження закриття" (в поточній локалізації).
true - якщо об`єкт не було змінено ($isDirty = false), false в іншому випадку.
Якщо модель даних не змінювалася, то метод просто повертає true, якщо змінювалася - показує діалог
підтвердження закриття з трьома кнопками: "Зберігти", "Не зберігати" і "Скасувати"
(в поточній локалізації) і повертає false.
Після того, як користувач зробить вибір, контролер виконає потрібну дію (наприклад, збереже модель) і закриє поточне вікно.
Найчастіше метод використовується в делегаті CanCloseDelegate об'єкта Dialog.
$setFilter(target:object, prop:string, value:any): void
Оскільки фільтри дуже тісно взаємодіють з розміткою та поведінкою системи, неможна просто встановити значення фільтра з коду.
Для цього потрібно використовувати метод $setFilter.
Після встановлення значення система виконає всі необхідні дії, оновить інтерфейс, виконає серверні запити тощо.
target - об'єкт, для якого потрібно встановити фільтр.
prop - ім'я властивості елементу фильтру.
value - нове значення.
$inlineOpen(id:string): void
Відкриває вбудований діалог (InlineDialog).
id - ідентифікатор діалогу.Вбудований діалог має повний доступ до поточної моделі. Управління поведінкою повністю лягає на програміста.
$inlineClose(id:string, result: any): void
Закриває вбудований діалог (InlineDialog).
id - ідентифікатор діалогу.result - зарезервовано. В поточній версії не використовується.$focus(htmlid: string): void
Встановлює курсор на елемент з заданим htmlid.
htmlid - ідентифікатор елементу
(можна встановити за допомогою властивості HtmlId об'єкту UIElementBase).
$emitSaveEvent(): void
Відправляє коду, що визвав діалог (caller) подію, яка задається властивістю SaveEvent
елемента Dialog.
$emitCaller(event: string, ...params: any[]): void
Відправляє коду, що визвав діалог (caller) подію.
event - назва події.
params - Параметри події.$nodirty(func: () => Promise<any>): void
Визиває функцію-параметр таким чином, щоб не змінити властивість $dirty для моделі.
func - функція, що визивається. Функція обов'язвово має бути асінхронною
(або має повернути проміс).
$upload(url: string, accept?: string, data?: { Id?: any, Key?: any }, opts?: { catchError?: boolean }): Promise<any>Показує діалог вибору файлу та відправляє його вміст на сервер.
url - шлях до команди file, яка має опрацювати завантажений файл.
accept - дозволені mime-типи файлу (через кому). Виставляє фільтр в діалозі вибору.
Приклади:
data - об'єкт. Цого властивість Id буде передано в команду в якості ідентифікатора.
opts - об`єкт опцій. В поточній версії містить єдину властивість - catchError.
Якщо вона встановлена, то при виникненні помилок проміс буде відмінено і помилку можна буде
перехопити в коді за допомогою метода catch
(або в операторі try... catch для async ... await) проміса). За замовчуванням
система просто виводить повідомлення про помилку і не виконує проміс.
Promise<any>, який буде виконаний після завершення операції. Вміст промісу - це те, що поверне сервер.