2016-12-14 5 views
0

나는 통화를 변환하기 위해 fixer.io와 money.js를 사용하고 있습니다. money.js는 통화 변환에 사용되며 fixer.io는 최신 환율을받는 API입니다. money.js rates 오브젝트에 최신 환율을로드해야합니다.기본 각도 - 다른 json 객체에 json http 응답을로드하는 방법

나는 각 사용하고 있기 때문에이 money.js이 같은로드 : 그러나

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 */ 
} 

: 변환 작업을 위해서는

var fx = require("money"); 

, 우리는이 같은 fx.basefx.rates을 정의해야 , fx.rates에 대한 하드 코드 된 데이터가 GET 요청에서 fixer.io API로 채워지므로이 JSON을 반환합니다. http://api.fixer.io/latest

나는 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