2016-09-02 7 views
-1

私はでexample.comあるサードパーティのAPIからデータを取得し、次のコードがあります来ているデータの場合は今ではdata.pagination.next再帰的ループを実行するには?

である改ページが含まれてい

$scope.buttonClick = function() { 
    $http.get('https://example.com'). 
     success(function (data, status, headers, config) { 
      console.log(data.pagination.next); 

      for (var key in data.applicants) { 
       if (data.applicants[key].email == "[email protected]") { 
        console.log('found'); 
        console.log(data.XXX[key].id); 
      } 
     } 
    }). 
    error(function (data, status, headers, config) { 
     // log error 
    }); 
} 

を第三者から1ページ以上であれば、この操作を再帰的に実行して電子メールのIDが一致するかどうかを確認したい場合は、条件に該当するIDを返します。

答えて

1

検索するコードからチェックするコードを分離し、後者を関数でラップする必要があります。次にいくつかの場合、/ elsesはちょうど同じことをします。

$scope.buttonClick = retrieveData; 

function retrieveData(pageId) { 
    var params = { pageId: pageId || 1 }; 
    $http.get('https://zzz.com', params). 
     success(function (data, status, headers, config) { 
      var applicantFound = searchApplicantMail(data); 
      if(! applicantFound && data.pagination.next) { 
       return retrieveData(data.paginantion.nextPage); 
      } 
      doSomethingWith(applicantFound); 
     }). 
     error(function (data, status, headers, config) { 
      // log error 
     }); 
} 

function searchApplicantMail(data) { 
    for (var key in data.applicants) { 
     if (! data.applicants.hasOwnProperty(key)) { 
      continue; 
     } 
     if (data.applicants[key].email == "[email protected]") { 
      return data.applicants[key]; 

     } 
    } 
    return false; 
} 
+0

回答ジョルジオための多くのおかげで、私は次のエラー取得しています: 「$ HTTPを未定義である」 –

+0

$ HTTPサービスは、コアの角service'([ドキュメント]である 'として、実際には非常に奇妙です(https://docs.angularjs.org/api/ng/service/$http))。あなたは 'angular.module( 'my.module')のようなあなたのコントローラでそれを利用可能にすることを忘れましたか? ? – giorgio

+0

btwこれらの関数はコントローラのメンバでなければなりません。他の '$ http'は実際にはほとんど利用できません。 – giorgio

関連する問題