我正在使用AngularJS进行API请求,该请求接收可用于特定市场的当前实时促销优惠。市场由ADI组织。
并非所有市场在任何特定时刻都会有多个优惠 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");
}
});
}
};
你有什么建议在这一点上做的,这将使我的代码更有效,并将在许多其他情况下工作?
答案 0 :(得分:1)
您可以使用Array.map函数循环遍历响应数组并添加任何其他属性。您也不需要使用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");
}
});
}
};