2016-09-29 4 views
0

AngularJSを使用してAPIリクエストを行い、特定の市場で利用可能な現在のライブプロモーションを受信して​​います。市場はADIによって整理されています。APIリクエスト機能AngularJSをクリーンアップ

いずれの時点でも、すべての市場に複数のオファーLIVEがあるわけではありません。時には0、1、または2でもあるが、それは市場が同時に生きていることができる最大のものである。下のコードが表示された場合は、私のAPI呼び出しに気付くことができ、返答に基づいて有効期限やキャンペーンの状態などのプロパティを取得します。

ループして[1]を見つけようとするので、私にエラーが発生します。市場が複数のライブオファーを持っていない場合、私はエラーが発生しないようにこの機能をクリーニングすることをどのようにお勧めしますか?

また、プロパティis_primaryに気づくでしょう、私はそれをブール値に変更したいと思います。答えが1に等しい場合は、答えを真にして、フロントエンドに表示できるようにします。答えが0の場合はfalseです。

$scope.offersNow = function() { 
    if (offer.campaign_state === 'live') { 
     var config = { method: 'get', url : $scope.config.url + '/offers/' + $scope.offer.market_adi}; 
     console.log($scope.offer.market_adi); 
     $http(config).success(function(response, status){ 
      if(status === 200) { 

       if (response.length > 0) { 
        response[1].Expiration_Date = moment.utc(response[1].Expiration_Date).format('MM-DD-YYYY'); 
        response[1].isPrimary = response[1].is_primary; 
        console.log(response[1]); 
        console.log(response[1].isPrimary); 
        console.log(response[1].Expiration_Date); 
       } 

       console.log(response.length); 

       response[0].Expiration_Date = moment.utc(response[0].Expiration_Date).format('MM-DD-YYYY'); 
       response[0].isPrimary = response[0].is_primary; 

       console.log(response[0]); 
       console.log(response[0].isPrimary); 
       console.log(response[0].Expiration_Date); 

      } 
      else{ 
       alert("Is Not Working"); 
      } 
     }); 
    } 
}; 

あなたは私のコードをより効率的になり、他の多くの例で動作します。この時点では何をしていることをお勧めしますか?

答えて

1

Array.map関数を使用して、レスポンス配列をループし、追加のプロパティを追加できます。また、長さがマップ関数で0より大きいかどうかを確認する必要はありません。

$scope.offersNow = function() { 
    if (offer.campaign_state === 'live') { 
     var config = { method: 'get', url : $scope.config.url + '/offers/' + $scope.offer.market_adi}; 
     console.log($scope.offer.market_adi); 
     $http(config).success(function(response, status){ 
      if(status === 200) { 
       response.map(function(offer, index, arr) { 
        offer.Expiration_Date = moment.utc(offer.Expiration_Date).format('MM-DD-YYYY'); 
        offer.isPrimary = offer.is_primary; 
        console.log(offer); 
        console.log(offer.isPrimary); 
        console.log(offer.Expiration_Date); 
        return offer; 
       } 
      } 
      else{ 
       alert("Is Not Working"); 
      } 
     }); 
    } 
}; 
関連する問題