2016-10-02 5 views
1

私はIonic 2 Calendarを使用して、サブスクライブされているクラス時間をリモートサーバからjsonと表示しています。私はサブスクリプションから応答を抽出して配列に格納しようとしていますが、データをconsole.logに出力するときには "未定義"となります。次のように角度http.get.subscribeからデータを抽出する方法

コードは次のとおりです。

export class Calendar { 
    eventSource; 
    viewTitle; 

    constructor(private navController:NavController, private httpService:HttpService) { 
     var classes = []; 
     this.httpService.getCalendarConfig() 
      .subscribe(res => classes => res); 

     console.log(classes); 
    } 

注、私は.subscribeを変更した場合:

.subscribe(res => console.log(res)); 

それはコンソールに必要としてそれはJSONを表示します。

編集:次のように、HTTPServiceクラスが見えます:

@Injectable() 
export class HttpService { 

    endpointUrl:string = '<address>'; 

    constructor(private http: Http) {} 

    getCalendarConfig() { 
     return this.http.get(this.endpointUrl + 'calendar.json') 
         .map(this.extractData) 
         .catch(this.handleError); 
    } 

    private extractData(res: Response) { 
     let body = res.json(); 
     return body || {}; 
    } 

    private handleError(error: any) { 
     let errMsg = (error.message) ? error.message : 
      error.status ? '${error.status} - ${error.statusText}' : 'Server error'; 
     console.error(errMsg); 
     return Observable.throw(errMsg); 
    } 

}

答えて

2

あなたはclasses値はできるだけ早くあなたがサービスに電話をかけるように適用することを検討しているので。しかし、それは非同期呼び出しが動作する方法ではうまくいかないでしょう。彼らはajaxが完了するとすぐに出力を提供します。

あなたはthis.httpService.getCalendarConfig()

var classes = []; 
this.httpService.getCalendarConfig() 
    .subscribe(res => { 
     classes => res; 
     console.log(classes); 
    }); 
+0

こんにちは@Pankajパーカーのサブスクリプションの成功の内側classesオブジェクトを取得しますが、それはもはや「未定義」と言うように、状況を改善しなかったこと、ありがとうございました。しかし、コンソールはこう言っています:Array []。私は間違ったデータ型に割り当てましたか? –

+0

あなたはその配列を開いてください。あなたはそれに要素を得るでしょう –

+0

こんにちは@Pankajは遅れてごめんなさい!あなたはどのように配列を開きますか? –

関連する問題