2016-10-02 14 views
1

Ich verwende die Ionic 2 Calendar, um Klassenzeiten anzuzeigen, die als JSON von einem Remote-Server abonniert wurden. Ich versuche, die Antwort von meinem Abonnement zu extrahieren und in ein Array zu legen, aber wenn ich die Daten in console.log ablege, bekomme ich "undefiniert".So extrahieren Sie Daten aus angular http.get.subscribe

Der Code ist wie folgt:

export class Calendar { 
    eventSource; 
    viewTitle; 

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

     console.log(classes); 
    } 

Hinweis, wenn ich .subscribe zu ändern:

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

Es zeigt die JSON, wie es sollte in der Konsole.

bearbeiten: die Httpservice-Klasse sieht wie folgt aus:

@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); 
    } 

}

Antwort

2

Weil Sie erwägen, dass classes Wert anwendbar zu sein, sobald Sie einen Anruf-Service. Aber das funktioniert nicht so, wie Async-Aufrufe funktionieren. Sie werden immer dort ausgeben, sobald sie ajax abgeschlossen sind.

Sie das classes Objekt innerhalb Erfolg des Abonnements von this.httpService.getCalendarConfig()

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

Hallo @Pankaj Parkar bekommen, danke, dass die Situation verbessert hat, da es nicht sagt mehr „unbestimmt“. Aber jetzt sagt die Konsole: Array []. Habe ich den falschen Datentyp zugewiesen? –

+0

Könnten Sie bitte dieses Array öffnen .. Sie werden Elemente darin erhalten –

+0

Hallo @ Pankaj Entschuldigung für die Verzögerung! Wie öffnest du das Array? –

Verwandte Themen