Javascript对象在for循环中变为未定义

时间:2015-08-13 17:15:15

标签: javascript

当我尝试将usersData对象添加到for循环内的过滤器idToName时,它突然变为未定义。在for循环运行之前,usersData不应该获取值吗?我该如何解决?

  Project.getProjects()
  .success(function(data) {
    vm.projects = data;
    var projectLength = vm.projects.length;

    // Get usersData
    User.allUsers()
    .success(function(data) {
      usersData = data;
      console.log(usersData); // It prints the object
    })

    for (var i = 0; i < projectLength; i++){
      console.log(usersData); // It prints undefined
      vm.projects[i].assigneeID = $filter('idToName')(vm.projects[i].assigneeID, usersData);
    }
  })

2 个答案:

答案 0 :(得分:3)

必须是异步调用。尝试将代码更新为以下

// Get usersData
    User.allUsers()
    .success(function(data) {
      usersData = data;
      console.log(usersData); // It prints the object
      for (var i = 0; i < projectLength; i++){
          console.log(usersData); // It prints undefined
           vm.projects[i].assigneeID = $filter('idToName')(vm.projects[i].assigneeID, usersData);
      } 
    })

答案 1 :(得分:2)

for循环移至User.allUsers调用的回调内部。在返回对象之前,您正在使用usersData