2016-12-14 39 views
0

我正在使用fixer.io和money.js轉換貨幣。 money.js用於轉換貨幣和fixer.io是獲取最新匯率的api。我需要將最新的匯率加載到money.js匯率對象中。基本角度 - 如何將json http響應加載到另一個json對象中

因爲我使用的角度,money.js被加載,如:

var fx = require("money"); 

爲了轉換工作,我們必須定義fx.basefx.rates這樣的:

fx.base = "USD"; 
fx.rates = { 
    "EUR" : 0.745101, // eg. 1 USD === 0.745101 EUR 
    "GBP" : 0.647710, // etc... 
    "HKD" : 7.781919, 
    "USD" : 1,  // always include the base rate (1:1) 
    /* etc */ 
} 

然而,而不是fx.rates的硬編碼數據從GET請求填充到fixer.io API,該API將返回此JSON: http://api.fixer.io/latest

我是一個總的noob角,所以我不明白如何加載到另一個JSON對象的JSON響應。

什麼是做這樣的事情的正確方法:

var response = $http.get("http://api.fixer.io/latest"); 
fx.rates = response; 

回答

1

這是很容易,使用角的http promise。要處理承諾,請使用.then方法。所有你需要的是一個回調函數來處理數據。 :

var response = $http.get("http://api.fixer.io/latest"); 

//handle promise 
response.then(function(response) { 
    //this is response from the api fixer. The data is the body payload 
    fx.rates = response.data; 
}, function(error) { 
    //handle error here, if there is any. 
}); 

這裏是working plnkr,如果你需要的話。

+0

即使json包含其他字段,這個工作嗎?如果您查看該URL的Json響應,它還包含基本屬性和日期屬性,然後是費率。所以不是我真正需要的更多像'fx.rates = response.data.rates' – lmo523

+0

還有一個問題 - $ http承諾也必須在控制器中? – lmo523

+0

是的。 response.data包含有效內容主體中的所有內容。所以如果數據有1000個屬性,它將包含它們中的每一個。 $ http是一個注入控制器的服務,如plnkr所示 – CozyAzure

相關問題