2016-05-31 44 views
2

我的客戶端應用程序的#/檔案/ {id}/offertes
我需要從其他api/dossiers/{id}獲取我的檔案。
然後在該檔案我需要得到相應的offerte API /檔案/ {ID}/offerte
從我會得到我的offerteRecords API/offertes/{ID2} /記錄Restangular OneToOne連接

我西港島線包括我的REST數據here

第一檔案是沒有問題的。

restService.getOne("dossiers",this.parentId).then(
    (dossier: any): void => { 
     this.dossier = dossier; 
} 

但是從那我想得到我的第二檔案。 我能夠做到這一點是這樣的:

restService.getOneUrl("offertes", this.dossier._links.offerte.href).then(
    (offerte: any): void => { 
     this.parent = offerte; 
     console.log("offerte is ", this.parent); 
    } 
); 

而這給了我

對象{ID:1,createdBy: 「系統」,createdOn:「2016-05-17T14:24 :43.384 + 0000" ,updatedBy:空,updatedOn:空...}

但我想做到像

this.dossier.getList("offerte").then(
      (offerte: any):void =>{ 
       console.log("offerte is ", offerte); 
      } 
     ); 
東西

但這返回

[路線: 「offerte」,reqParams:空,restangularized:真,fromServer:真,parentResource:對象...]

我應該如何調用這個對象,而不是的GetList上()?

回答

0

我發現我的問題的部分解決方案。
在我的restangular配置有這個預先定義,當我得到了項目。

restangularProvider.addResponseInterceptor(function(data: any, operation: string, what: string, 
                url: string, response: any, 
                deferred: any): any { 
    let result: any = data; 

    if (operation === 'getList') { 
     if (data._embedded !== undefined) { 
      result = data._embedded[what]; 
     } else { 
      result = []; 
     } 
} 

    return result; 
}); 

與getOneUrl相比,這使得我收到的數據更加順利。
這樣做是因爲restangular總是希望數組輸入到getList。
我可以通過編寫一些滿足getList要求的自定義包裝器來解決這個問題,但是最簡單/最快的解決方案是使用customGET()來完成我想要的操作。

this.dossier.customGET("offerte").then(
     (offerte: any):void =>{ 
      console.log("offerte is ", offerte); 
     } 
    ); 

這將返回正確的offerte對象。