javascript - API 请求函数清理 AngularJS

标签 javascript angularjs

我正在使用 AngularJS 执行 API 请求,该请求接收针对特定市场的当前实时促销优惠。市场由 ADI 组织。

并非所有市场都会在任何特定时刻实时提供多个报价,因此我很难区分。有时会有 0 个、1 个甚至 2 个,但这是一个市场可以同时存在的最多数量。如果您在下面看到我的代码,您可以注意到我的 API 调用,然后根据我的响应,我进入并获取更多属性,例如到期日期、事件状态等。

因此,对于有 1 个报价的市场,它会给我一个错误,因为它会尝试循环并找到 [1]。您建议如何清理此功能,以便在市场没有多个实时报价时我不会出现错误。

您还会注意到属性is_primary,我想将其更改为 bool 值。因此,如果答案等于 1,则将答案设为 true,以便我可以将其显示在前端。如果答案等于 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");
            }
        });
    }
};

您建议此时做什么可以使我的代码更加高效并且可以在许多其他情况下工作?

最佳答案

您可以使用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");
            }
        });
    }
};

关于javascript - API 请求函数清理 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773072/

相关文章:

javascript - 迷失在迷雾中 : actions in redux/reactjs

javascript - 如何使用 javascript 访问文本文件?

javascript - 搜索 JSON 以查找特定值

javascript - 是否可以更改 Fabricjs Canvas onclick 的尺寸?

javascript - 想在 flowFactoryProvider 配置中设置动态文件夹名称以将其传递给 upload.php 文件以将上传的文件保存在其中

AngularJS 1.5.x $onChanges 不适用于单向绑定(bind)更改

jquery - POST 使用 JQuery 工作,但不能使用 Angularjs

javascript - ng-click Angular JS 问题

javascript - 仅在处理结果列表后才需要从 $http 查询返回数据

javascript - 在数组 Angular JS 中转换对象的简单方法是什么?