ionic2 ..如何在页面加载前解决promise

时间:2016-09-10 17:11:05

标签: angular ionic2

当我的用户导航到组管理页面时,我当前在构造函数的http调用中获取组:

@Page({ ..})
export class GroupManager {

  constructor(private _http: Http) {
     this._http.get(someurl)
          .map(..)
          .subscribe(..)
  }

}

所以我的要求是:每当用户导航到组管理页面时,从服务器获取组。

我想要实现的是在获取组时不显示空白页面(而不是在构造函数中进行http调用)。

任何人都建议在离子2中实现这一目标的更好方法吗?

1 个答案:

答案 0 :(得分:1)

如果您希望每次用户导航到页面时都从服务器获取数据constructor就不是正确的选择。我们可以使用ionViewWillEnter事件而不是在那里进行。

不幸的是,我们无法控制数据准备多长时间,但我们可以做的是让用户通过向他/她显示加载消息来了解这一点。这样,我们将避免在获取数据时显示空白页面,并且在数据准备好之前,页面将被禁用(因此用户将无法与其进行交互)。

Ionic2-beta.11你可以这样做:

import { Component } from '@angular/core';
import { LoadingController, NavController } from 'ionic-angular';

@Component({
  templateUrl:"page1.html"
})
export class Page1 {

  private loading : any;

  constructor(private _http: Http, private _loadingCtrl: LoadingController) {

  }

  ionViewWillEnter() {

    this.loading = this._loadingCtrl.create({
      content: 'Fetching groups...'
    });

    loading.present();

    this._http.get(someurl)
      .map(..)
      .subscribe((data) => {

        // ...

        // Hide the message when the data is ready
        this.loading.dismiss();

      });

  }

}