まず上記のコードを下記のコードに書き換える。
- .service('Population', ['$http', function($http) {
- this.get = function(country, year) {
- return $http.jsonp('http://api.population.io:80/1.0/population/' + year + '/' + country + '/?format=jsonp&callback=JSON_CALLBACK')
- .then(
- function(response) {
- return response.data;
- }
- );
- };
- }])
これは「$http」サービスを使ってOpenDolphinから検査データを取得するサービスPopulationである。また、確認の為6行目に、タップした際に検査データをアラートで表示する処理を加えている。編集を行った後、検査項目をタップすると、前回と同様の画面が表示された。
- .service('Population', ['$http', function($http) {
- this.get = function(country, year) {
- return $http.get('http://172.16.108.251:8080/dolphin/openSource/lab/module/00001,0,6')
- .then(
- function(response) {
- alert(JSON.stringify(response.data,null,2));
- return response.data;
- }
- );
- };
- }])
次に、先ほどのコードを上記のコードに書き換える。
- .service('Population', ['$http', function($http) {
- this.get = function(country, year) {
- return $http.get('http://172.16.108.251:8080/dolphin/openSource/lab/module/00001,0,6')
- .then(
- function(response) {
- //alert(JSON.stringify(response.data,null,2));
- var laboResults = [];
- response.data.list.forEach(function(list){
- list.items.forEach(function(item){
- if(item.itemName == country){
- laboResults.push(item);
- }
- });
- });
- alert(JSON.stringify(laboResults,null,2));
- return laboResults;
- }
- );
- };
- }])
まず、7行目で配列変数laboResultsを定義し、その中身を空にする。そして、8行目はlist配列の各々に格納されている1日分の検査データ1つずつに対してループ処理を行っている。9行目は1日分の検査データ items の個々の検査項目1つずつに対してループ処理を行っている。10行目は選択したデータ(名称がcountryに格納されている)と同じ検査名称(itemName)の検査項目を抽出してlaboResults配列に追加するといった処理である。確認の為、スマートフォンアプリの方で検査項目「総ビリルビン」をタップしたところ、総ビリルビンのデータのみを表示させることが出来た。
図1 MONACAアプリ画面 |
0 件のコメント:
コメントを投稿