无法从API访问数据

时间:2017-08-31 08:43:01

标签: angular api ionic2 ionic3

我是离子和棱角分明的新人。我想从API获取数据,但我无法访问数据。

这是我的代码

  public items: any;

  constructor(
    public navCtrl: NavController, 
    public modalCtrl: ModalController, 
    public navParams: NavParams, 
    public http: Http) {

    let headersToken = new Headers();
    headersToken.append('Authorization', 'Bearer token here');

    this.http.get('http://localhost:8000/api/data',{headers : headersToken}).map(res => res.json()).subscribe(data => {
            this.items = data;
        });

  }       

  ionViewDidLoad(){ 
    console.log(this.items);
  }

IonViewDidLoad的结果未定义。

3 个答案:

答案 0 :(得分:0)

调用IonViewDiDLoad时,可能是您的HTTP调用Isnt已完成。尝试设置超时,看看它是否有效。否则,可能是您的HTTP请求未返回正确的数据

答案 1 :(得分:0)

你可以这样做:

注意:由于async性质,您需要执行此操作,如下所示。

 ionViewDidLoad(){ 
    let headersToken = new Headers();
    headersToken.append('Authorization', 'Bearer token here');

    this.http.get('http://localhost:8000/api/data',{headers : headersToken}).map(res => res.json()).subscribe(data => {
            this.items = data;
            console.log(this.items);
        });

  }

答案 2 :(得分:0)

你需要了解为什么会这样。

Http.get是异步调用。

您编写代码的方式是在您从http呼叫接收输出或呼叫完成之前执行console.log(this.items);

要确保在通话后获得数据,您需要将控制台置于订阅中。

我在subscribe

中添加了以下console.log(this.items)
        this.http.get('http://localhost:8000/api/data',{headers : headersToken})
.map(res => res.json())
.subscribe(data => this.items = data, // 1st param where you get data
           (error) => console.log(error), // error if any
           () =>  conosle.log("call is finished"+this.items) // call is completed. here you call ionViewDidLoad() as well.
           );

      }       

      ionViewDidLoad(){ 
        console.log(this.items);
      }

我希望这会有所帮助。