Диалог Aurelia: Показать счетчик ожидания во время асинхронной активации

Я использую aurelia-диалог для отображения деталей учетной записи.

Все примеры aurelia-dialog, которые я видел, включают передачу всего объекта в диалог и использование этого объекта в качестве модели представления для диалога. Что я хочу сделать, это передать идентификатор и запустить AJAX-вызов, чтобы получить подробные данные.

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

Мне бы хотелось, чтобы диалоговое окно отображалось сразу и показывало счетчик, пока обещание не разрешится. Есть ли простой способ сделать это? Кто-нибудь видел или делал это?

1 ответ

the dialog doesn't display at all until the promise is resolved вот задуманный дизайн, вы ничего не сможете вернуть и это покажет. В этом случае вы просто отметите что-нибудь, когда обещание будет выполнено.

export class MyDialogVM {
  showSpinner = false;
  // ...
  activate(id) {
    this.showSpinner = true;
    this.http.get(`/my-api/${id}`).then(result => {
      this.showSpinner = false;
    });
  }
}

И ваш диалог

<template>
  <!-- other stuff -->
  <i class="fa fa-spinner fa-spin" show.bind="showSpinner"></i>
  <!-- other stuff -->
</template>
Другие вопросы по тегам