Объявление событий элемента управления в клиентском компоненте
-
Генерируемые элементом управления события должны быть проинициализированы.
-
Событие должно быть сгенерировано.
Инициализация событий
Для примера рассмотрим инициализацию события onShowed
, поддерживаемого элементом управления:
export class SuperControlParams extends BaseControlParams { (1)
@apiEvent onShowed?: BasicApiEvent<IEventArgs>;
}
1 | Класс параметров с объявлением события onShowed . |
Для инициализации события onShowed
, нужно добавить в конструктор класса реализации следующий код:
this.state.onShowed = SimpleEvent.Create<IEventArgs>(this.state.wrapper);
Событие onShowed
является непрерываемым (имеет тип BasicApiEvent
). Для прерываемого события, инициализация будет выглядеть следующим образом:
this.state.onShowing = CancelableEvent.Create<IEventArgs>(this.state.wrapper);
Таким образом конструктор класса реализации может выглядеть так:
construct() {
super.construct();
this.state.onShowed = SimpleEvent.Create<IEventArgs>(this.state.wrapper);
this.state.onShowing = CancelableEvent.Create<IEventArgs>(this.state.wrapper);
}
Генерация события
SimpleEvent.cast(this.state.onShowed).trigger({} as IEventArgs);
await CancelableEvent.cast(this.state.onShowing).trigger({} as IEventArgs).promise;
Связать обработчики с контекстом
Связывание обработчика с контекстом выполняется в конструктор класса реализации, что демонстрируется в следующем коде, в котором выполняется связывание с контекстом обработчика события onClick
.
construct() {
super.construct();
this.clickHandler = this.clickHandler.bind(this); (1)
}
1 | Метод clickHandler является внутренним обработчиком события onClick . |