2017-04-14 78 views
0

嗨,大家好,我想問你關於檸基本的問題,我的API服務器返回response from server如何分配從響應對象的數據對象

在我的角度服務我正在全成請求從服務器獲取這樣的數據:

get() { 
     return this._$http({ 
      url: `${this._AppConstants.api}/calendar`, 
      method: 'GET' 
     }).then(
      (res) => { 
       let events = []; 
       return res.data; 
      } 
     ) 
    } 

但我想分配對我的events對象的響應。比方說,我的服務器返回(你可以在截圖中看到)的對象,但我想改造他們是這個樣子:

{ 
title: res.data.description, 
startsAt: res.data.startdate, 
endsAt: res.data.enddate 
} 

我沒有任何想法如何從服務器轉換對象工作陣列

回答

0

根據您的確切需要,您可以傳入一個新對象。

events.push({ 
    title: res.data.description, 
    startsAt: res.data.startdate, 
    endsAt: res.data.enddate 
}) 

請記住,你的events變量聲明你的.then()函數內,所以不會暴露其值(一個或多個)。

1

備選地,可以使用可觀察和一種方法是這樣的:

getProducts(): Observable<IProduct[]> { 
    return this._http.get(this._productUrl) 
     .map((response: Response) => <IProduct[]> response.json()) 
     .do(data => console.log('All: ' + JSON.stringify(data))) 
     .catch(this.handleError); 
    } 

上可觀察到的映射運算符映射如IProduct接口定義爲產品對象的數組的響應。

0

你可以返回一個可觀察到的:
events.service.ts

events(){ 
    return this.http.get(this.eventsUrl) 
     .map((response: Response) => response.json()) 
    } 

,然後訂閱它在你的組件:
event.component.ts

export class EventComponent{ 
    events = []  
    constructor(private eventSvc:EventService){ 
    eventSvc.subscribe(
     events => this.events = events 
    ) 
    } 
}