Остановка выполнения операции с помощью прерываемого события элемента управления
События, генерируемые элементом управления, могут быть стандартными (непрерываемые) и прерываемыми, с помощью которых обработчик может остановить выполнение операции (например, сохранение карточки).
-
Добавьте событие в описатель элемента управления:
<?xml version="1.0" encoding="utf-8" ?> <Controls> <Control Name="SomeControl" DisplayName="Пример элемента управления"> <Properties> <Property Type="Name" /> </Properties> <Events> <Event Name="someEventing" DisplayName="Перед выполнение операции"/> (1) </Events> </Control> </Controls>
1 Прерываемое событие. -
В клиентском компоненте элемента управления в классе параметров для события укажите тип CancelableApiEvent:
export class SomeControlParams extends BaseControlParams { @apiEvent someEventing?: CancelableApiEvent<IEventArgs>; }
-
В клиентском компоненте элемента управления в классе реализации:
-
Проинициализируйте прерываемое событие с помощью метода
CancelableEvent.Create
:construct() { super.construct(); this.state.someEventing = CancelableEvent.Create<IEventArgs>(this.state.wrapper); }
-
Во внутреннем обработчике события, вызываемого перед выполнением операции, добавьте код, который будет выполняться при прерывании события внешними обработчиками, и код для продолжения обработки события:
protected internalEventHandler = async () => { try { await CancelableEvent.cast(this.state.someEventing).trigger().deferred; console.log("Выполнение операции ..."); (1) } catch { console.log("Выполнение операции прервано ..."); (2) } }
1 Код, вызываемый при продолжении операции. 2 Код, вызываемый при отмене операции.
-