Объявление событий элемента управления в клиентском компоненте

Чтобы корректно объявить обрабатываемое событие в клиентском компоненте элемента управления, нужно выполнить два условия:
  • Генерируемые элементом управления события должны быть проинициализированы.

  • Событие должно быть сгенерировано.

Инициализация событий

Для примера рассмотрим инициализацию события 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.