Прерывание выполнения операции
Функция, настроенная для обработки события, возникающего при выполнении операции, позволяет прервать её выполнение, если аргумент события имеет интерфейс 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
не является обязательным. Однако accept
или cancel
обязателен в случае, если вызван wait
.
Другой пример демонстрирует использование метода 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. События, возникающие при начале выполнения операции, реализуют типы CancelableApiEvent и BasicApiEvent .
|