Аурелия: EventAggregator срабатывает дважды - PullRequest
2 голосов
/ 20 февраля 2020

Функция, вызываемая функцией подписки, запускается дважды.

Издатель используется не в функции активации или присоединения, а в асинхронной функции c другого класса. Оба класса получают один и тот же EventAggregator через связывание. Console.Trace () имеет одинаковые маршруты в обоих случаях. Набор «Публикация / подписка» уникален и не используется никакими другими классами.

async sender(item:any):Promise<void> {
this.dialogService.open({
            viewModel: CaModalConfirm,
            model: {
                color:   this.color
            }
        }).whenClosed(async response => {
            if (response.wasCancelled === false) {
                this.moduleName = params.params.moduleId;
                await this.selectionEventAggregator.publish('requestSelection',{item: item});
                this.elementEventAggregator.publish('hideSidebar');
            }
        });
}

---------------------------------------------

    attached() {
        this.subscriptions.push(
            this.selectionEventAggregator.subscribe(
                'requestSelection',
                params => this.sendSelection(params)
            )
        );
    }
    
    sendSelection(params):void {
        console.trace(params);
        this.selectionEventAggregator.publish(
            'sendSelected',
            {
                selection:  this.itemSelection,
                item:      params.item
            }
        );
    }

1 Ответ

1 голос
/ 21 февраля 2020

Пользовательский элемент, содержащий пользовательский элемент с подпиской, использовался дважды, что вызвало проблему. Это не было проблемой EventAggregator.

...