Прерывание выполнения операции
Функция, настроенная для обработки события, возникающего при выполнении операции, позволяет прервать её выполнение, если аргумент события имеет интерфейс ICancelableEventArgs. Данный интерфейс определяет два метода: cancel — прерывает выполнение операции; accept — продолжает выполнение операции.
Следующий код демонстрирует пример обработчика события сохранения карточки, прерывающего сохранение, если в названии карточки (cardName) содержится слово "договор".
export function onCardSaving(sender: Layout, e: ICancelableEventArgs<ISaveControlData>) { (1)
let cardName = sender.controls.get<TextBox>("cardName"); (2)
if (cardName.params.value.includes("договор")) { (3)
MessageBox.ShowError("Для оформления договоров используйте вид документа 'Договор'");
e.cancel(); (4)
} else {
e.accept(); (5)
}
}
| 1 | Метод onCardSaving настроен в качестве обработчика события, вызываемого перед сохранением карточки
Список параметров метода соответствует аргументам события |
| 2 | Получение элемента управления с названием карточки. |
| 3 | Если в названии используется слово "договор", сохранении карточки будет прервано. |
| 4 | Метод cancel прерывает операцию сохранения. |
| 5 | Метод accept продолжает операцию сохранения. |
Вызов метода accept не является обязательным.
Другой пример демонстрирует использование метода wait, который позволяет отложить решение до момента выполнения асинхронной операции (например, запроса к серверу или показа диалога подтверждения).
export async function onCardSaving(sender: Layout, e: ICancelableEventArgs<ISaveControlData>) {
e.wait(); (1)
try {
await MessageBox.ShowConfirmation("Вы действительно хотите сохранить карточку?"); (2)
e.accept(); (3)
} catch {
e.cancel(); (4)
}
}
| 1 | Отменяем автоматический вызов e.accept(). |
| 2 | Показ диалога с ожиданием решения пользователя. |
| 3 | Разрешаем выполнение операции. |
| 4 | Отменяем событие. |
Чтобы определить, является ли событие прерываемым, обратитесь к его описанию в справочнике по JS API. События, возникающие при начале выполнения операции, реализуют интерфейс ICancelableEvent; возникающие после — IBasicEvent.
|