javascript - Angular 循环请求未定义

标签 javascript arrays angularjs

$http.get("./data/web.json")请求成功,返回一个数组。当我通过请求循环数组时,迭代器变量 i 将是未定义的?!那么如何访问返回数组并执行循环请求呢?

    <script>
        var ngApp = angular.module("webApp", ['xml'])
        .config(function ($httpProvider) {
            $httpProvider.interceptors.push('xmlHttpInterceptor');
          })
        .controller("webCtrl", function($scope, $http) {
            $http.get("./data/web.json")
            .success(function(response) {
                $scope.websites = response;
                for (i = 0; i < $scope.websites.length; i++){
                    $http.get('../api/alexa?url=' + $scope.websites[i].url)
                    .success(function(rsp) {
                        //$scope.websites[i].rank = rsp.data.POPULARITY.TEXT;

                        console.log($scope.websites[i]);
                    });
                }
                console.log(response);
            });

        });
    </script>

最佳答案

.controller("webCtrl", function ($scope, $http) {
  $http.get("./data/web.json")
    .success(function (response) {
      $scope.websites = response;
      for (i = 0; i < $scope.websites.length; i++) {
        $scope.processWebsites($scope.websites[i], i);
      }

    });
  $scope.processWebsites = function (website, index) {
    $http.get('../api/alexa?url=' + website.url)
      .success(function (rsp) {
        console.log($scope.websites[index]);
      });
  }

});

试试这段代码。这将创建一个新的执行上下文,从而消除由于异步执行而产生的任何意外副作用。

关于javascript - Angular 循环请求未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393166/

相关文章:

javascript - 如果我添加 &lt;!DOCTYPE html>,pageX pageY 在 IE8 中不工作

javascript .push() 添加到两个数组

arrays - MATLAB 中的矩阵数组

javascript - 水平滑动 - 定义开始和结束

javascript - 使用过渡 + 不透明度更改 + 溢出隐藏时出现问题

javascript - 查询特定字段的dynamodb

c - 将数字放置在随机坐标的“开放”槽中

css - ionic 更改默认下拉设计

javascript - 将 CSS 值从 ng-repeater 传递到外部元素。

javascript - AngularJS:编译与模板