2016-12-14 9 views
0

私は、通貨を変換するためにfixer.ioとmoney.jsを使用しています。 money.jsは通貨の変換に使用され、fixer.ioは最新の為替レートを取得するAPIです。最新の為替レートをmoney.jsレートオブジェクトにロードする必要があります。基本角 - 別のjsonオブジェクトにjson http応答をロードする方法

私は角、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へのデータがハードコードされています。これは、この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

もう1つの質問 - $ http約束はコントローラ内になければなりませんか? – lmo523

+0

はい。 response.dataには、ペイロード本体のすべてのものが含まれます。したがって、データに1000個のプロパティがある場合は、それらのすべてのプロパティが含まれます。 $ httpは、plnkrに示すように、コントローラに注入されるサービスです。 – CozyAzure

関連する問題