API请求函数清理AngularJS

时间:2016-09-29 14:28:02

标签: javascript angularjs

我正在使用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");
            }
        });
    }
};

你有什么建议在这一点上做的,这将使我的代码更有效,并将在许多其他情况下工作?

1 个答案:

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