2016-09-29 40 views
0

我正在使用AngularJS進行API請求,該請求接收當前可用於特定市場的現場促銷優惠。市場由ADI組織。API請求函數清理AngularJS

並非所有的市場都會有多個優惠LIVE在任何特定的時刻,所以我無法區分這一點。有時候會有0,1甚至2,但這是市場同時生活的最多。如果您看到我的代碼在下面,您可以注意到我的API調用,然後基於我的迴應,我進入並獲取更多屬性,如到期日期,廣告系列狀態等。

因此,對於有一個1 ,它給我一個錯誤,因爲它會嘗試循環並找到[1]。你如何建議清理這個功能,這樣如果市場沒有多個實時報價我不會有錯誤。

您還會注意到一個屬性is_primary,我想將其更改爲布爾值。因此,如果答案等於1,那麼請將答案設爲真,以便我可以在前端顯示該答案。如果答案等於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) { 

       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"); 
      } 
     }); 
    } 
};