Контролер відповідає за взаємодію моделі і виду. Будь-який об`єкт даних має властивість
$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>
, який буде виконаний після завершення операції. Вміст промісу - це те, що поверне сервер.