2016-10-02 3 views
1

Ionic 2 Calendar을 사용하여 원격 서버에서 json으로 구독 한 수업 시간을 표시하고 있습니다. 구독에서 응답을 추출하여 배열에 넣으려고하는데, 데이터를 console.log에 저장할 때 "정의되지 않음"을 얻습니다.각도 http.get.subscribe에서 데이터를 추출하는 방법

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

그것은 JSON 그것이 콘솔에서 정상적으로 표시

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가 변경하는 경우, 다음과 같이

코드입니다.

편집는 다음과 같이 이상 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 Parkar의 가입의 성공 내부의 classes 개체를 얻을 것이다, 더 이상 "정의되지 않은"말한대로, 상황을 개선하지 않았다가, 감사합니다. 그러나 지금 콘솔은 말한다 : Array []. 잘못된 데이터 유형을 할당 했습니까? –

+0

그 배열을 열어 주시겠습니까 .. 당신은 그것에 요소를 얻을 것입니다 –

+0

안녕하세요 @ Pankaj 지연 죄송합니다! 배열을 어떻게 열지? –

관련 문제