3

別のページに移動するポップオーバーがあり、そこでルート ページ (popToRoot) に戻り、イベントでデータ/DOM をリロードし、json データがサーバーから戻ってきたときにプロミスでポップアップを閉じます。却下時に大きなタイムアウトが発生した場合、すべて正常に機能します。

  dismissPopup() {
    if (this.popover) {
      let that = this;
      setTimeout(function () {
        that.popover.dismiss();
      }, 500);
    }
  }

タイムアウトを 100 ミリ秒に設定しすぎると、DOM がまだロード中であるため、終了しません。

ただし、タイムアウトを設定することがおそらくベスト プラクティスであるとは思いません。誰かが遅いデバイスを持っていて、時間が足りない場合はどうなりますか?

誰でも何か提案をしてもらえますか? DOM がロードされたことを検出してから、dismiss を呼び出す必要がありますか? dom がロードされたかどうかを確認するにはどうすればよいですか?

ありがとう

4

2 に答える 2

3

ViewController で Dismiss() メソッドを呼び出すことにより、ポップオーバーのビュー内からポップオーバーを閉じることもできます。

  constructor(public navParams:NavParams,public navCtrl:NavController,public viewController:ViewController) {
    console.log('Hello PopOverComponent Component');
  }
  blah()
  {
  //do something
    this.viewController.dismiss();
  }

于 2017-10-05T02:10:27.507 に答える