Как предотвратить загрузку Ionic 3 LoadingController - PullRequest
0 голосов
/ 07 мая 2018

В моем приложении есть области, которые запускают асинхронные сервисные вызовы. Итак, когда пользователь выполняет какое-то действие, которое блокирует, я показываю экземпляр loadingController. Тем временем может быть запущен еще один асинхронный вызов, и я снова представляю другой loadingController - но он перекрывает другой - не проблема, если они являются стандартными загрузчиками, но имеют прозрачный фон.

В предыдущих версиях ionic контроллеры не перекрывали друг друга.

Я что-то упустил?

1 Ответ

0 голосов
/ 08 мая 2018

Так что, если вы посмотрите на пример из документации по ionic 3 ниже, вы заметите, что они присваивают loadingController переменной var 'loading', затем он вызывается, чтобы позже закрыть загрузчик (loading.dismiss ()).

presentLoadingDefault() {
  let loading = this.loadingCtrl.create({
    content: 'Please wait...'
  });

  loading.present();

  setTimeout(() => {
    loading.dismiss();
  }, 5000);
}

Чтобы предотвратить поведение стека, вы можете просто иметь переменную на уровне вашего основного компонента или поставщика, а не в контексте выполнения метода presentLoadingDefault () и выполнить проверку, если загрузчик уже включен в вашем методе.

Вот как бы я использовал его в «loadingProvider»:

import { Injectable } from '@angular/core';
import { LoadingController } from 'ionic-angular';

@Injectable()
export class LoadingProvider {

    public loading = null;

    constructor (
        private loadingCtrl: LoadingController
    ) {
    }

    presentLoader() {
        // this below will prevent "stacking" as long as we treat this.loading as a single source of truth for any loader:
        if (this.loading) {
            this.loading.dismiss();
            this.loading = null;
        }
        // the rest is as usual
        this.loading = this.loadingCtrl.create({
            content: 'Please wait...'
        });
        this.loading.present();
        setTimeout(() => {
            loading.dismiss();
        }, 5000);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...