2017-04-23 28 views
1

私が作成しているIonic 3アプリケーションでSpotify APIを使用してデータを取得しようとしていますが、何らかの理由でconsole.logにデータそれは未定義として表示されています。いくつかのコードを示して、さらに説明しましょう。ここに私のgetData()です:Ionic3でプロバイダに加入した後、Console.logが未定義と表示される

getData(){ 
    console.log("getData has been called!!!"); 
    return this.http.get(this.dataUrl).map((res) => { 
     res.json(), 
     console.log(res.json())//this works fine 
    }); 

} 

上記のコードは正常に動作します。これは 'soundData'というプロバイダ/サービス内にあります。問題は次のコードで解決します。私はデータをCONSOLE.LOGしようとすると、それは私のブラウザのように未定義を示しています。 ionViewDidLoad(){

this.soundData.getData().subscribe(
     returnedData=> { 
      this.data = returnedData; 
      console.log(this.data) //this shows as undefined 
     }, 
     returnedError => { 
      this.error = returnedError; 
     }); 
} 

私は本当に私が間違ってやって表示されません。すべてがうまくいくはずですが、TypeScriptとIonicが初めてのので、何かが欠けているかもしれません。先進的でありがとう!より多くの慣用的な方法は、あなたは、単に以下のパターンに従うことができ、別途

getData() { 
    return this.http.get(this.dataUrl) 
     .map(res => res.json()) 
     .do(json => console.log(json)); 
} 

答えて

1

あなたのサービスメソッド

getData(): Observable<your-data-type>{ 
     return this.http.get(this.dataUrl).map(res => res.json()); 
    } 

あなたの方法購読

getData(): your-data-type { 
    this.soundData.getData().subscribe(
     returnedData => { 
      this.data = returnedData; 
     }, 
     err => {}, 
     () => {} 
    ); 
} 
0

のように、ロギング操作を実行するために.doメソッドを使用することです.map

getData() { 
    console.log("getData has been called!!!"); 
    return this.http.get(this.dataUrl).map((res) => { 
     console.log(res.json());//this works fine 
     return res.json(); 
    }); 
} 

からあなたがreturnに必要

関連する問題