2016-10-10 1 views
0

私はIonicでアプリケーションをコーディングしており、可能な限り動的にしようとしています。配列からlocalStorageへのIonic/Angular REST呼び出しの奇妙なネーミング動作

現在、私はREST呼び出しの束を作り、その結果をローカルストレージに保存しています。

localStorageで使用されるURIと名前は、配列で定義されます。

問題はこれです:$ http.getメソッドが成功すると、配列内の最後のタイトルの下に各結果を格納します。

var service = this; 
    endpoints = { 
    pilgrimages : "wp-json/wp/v2/pages?parent=9&per_page=100", 
    toursOfIreland : "wp-json/wp/v2/pages?parent=15&per_page=100", 
    escorted : "wp-json/wp/v2/pages?parent=11&per_page=100", 
    schoolCollege : "wp-json/wp/v2/pages?parent=13&per_page=100" 
    } 

    this.retrieve = function() { 
    for (var endpoint in endpoints) { 
     // console.log(endpoint + " : " + endpoints[endpoint]); 
     $http.get(baseUrl + endpoints[endpoint]) 
     .success(function(result, status){ 
     console.log(result); 
     result.forEach(function(index){ 
      if (index.page_thumb !== ""){ 
      index.page_thumb = window.baseUrl + index.page_thumb; 
      } 
      if (index.page_thumb == ""){ 
      index.page_thumb = "img/no_image_available.jpg"; 
      } 
      if (index.page_content !== "") { 
      index.content.rendered = index.page_content; 
      } 
     }); 
     console.log(thisEndpoint + " completed"); 
     var result = JSON.stringify(result); 
     window.localStorage.setItem(endpoint,result) 
     }) 
    } 

次のようにコンソール出力が...助けを

services.js:26 [Object, Object, Object] 
services.js:38 schoolCollege completed 
services.js:26 [Object, Object, Object, Object, Object, Object, Object, Object, Object] 
services.js:38 schoolCollege completed 
services.js:26 [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object] 
services.js:38 schoolCollege completed 
services.js:26 [Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object] 
services.js:38 schoolCollege completed 

感謝を読み込みます!

+0

'http'要求を修正する方法を、ああ、私は見 – Aks1357

+0

任意のアイデアを完了される前に' for'ループは 'endpoint'を更新して、はい、それは明らかに、ランダムタイトル(主に最後のタイトル)に保存されますそれ ? –

+0

よく似たシナリオがありましたが、UIからのリクエストを1つだけ送信するように変更し、バックエンドで処理が行われ、パフォーマンスにも役立ちます。多くのコールを保存します。この方法を実装すると、 'for'ループなしで複数のリクエストをしなければならないかもしれません。 – Aks1357

答えて

1

解決済み。

var service = this; 
    endpoints = { 
    pilgrimages : "wp-json/wp/v2/pages?parent=9&per_page=100", 
    toursOfIreland : "wp-json/wp/v2/pages?parent=15&per_page=100", 
    escorted : "wp-json/wp/v2/pages?parent=11&per_page=100", 
    schoolCollege : "wp-json/wp/v2/pages?parent=13&per_page=100" 
    } 

    this.retrieve = function() { 
    for (var endpoint in endpoints) { 
     var address = baseUrl + endpoints[endpoint] 
      makeRequest(endpoint,address); 
    } 
    console.log("app updated on " + new Date()) 
    $rootScope.updated = new Date(); 
    } 

    function makeRequest(endpoint,url) { 
    $http.get(url) 
    .success(function(result, status){ 
     console.log(result); 
     result.forEach(function(index){ 
     if (index.page_thumb !== ""){ 
      index.page_thumb = window.baseUrl + index.page_thumb; 
     } 
     if (index.page_thumb == ""){ 
      index.page_thumb = "img/no_image_available.jpg"; 
     } 
     if (index.page_content !== "") { 
      index.content.rendered = index.page_content; 
     } 
     }); 
     console.log(endpoint + " completed"); 
     var result = JSON.stringify(result); 
     window.localStorage.setItem(endpoint,result) 
    }) 
    } 
関連する問題