RestAngular

时间:2017-10-27 12:42:09

标签: angularjs iteration restangular

当我在迭代中触发一个静态API调用时,在块内部无法识别索引值。 请参阅代码段:

$scope.user = [];
var userList = [{'id':1, 'name':'Joe'}, {'id':2, 'name': 'Jack'}];
for (var i=0; i<userList.length; i++) {
  Restangular.all('userInfo/userId' + userList[i].id).getList().then(function(users) {
    // returns given user information
    console.log(i);
    $scope.user.push({'id': userList[i].id, 'info': users});
  })
}

出现以下错误

Uncaught TypeError: Cannot read property 'i' of undefined 

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

试试这个。

This is called closure inside loop.

    $scope.user = [];
    var userList = [{'id':1, 'name':'Joe'}, {'id':2, 'name': 'Jack'}];
    for (var i=0; i<userList.length; i++) {
      function(index){
          Restangular.all('userInfo/userId/'+userList[index].id).getList().then(function(users) {
          // returns given user information
          console.log(index);
          $scope.user.push({'id': userList[index].id, 'info': users});
      })(i);
    }
}