当我尝试将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);
}
})
答案 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
!