我正在学习JavaScript和AngularJS。我想使用函数之外的值,但我不知道如何访问它们。
这是我的代码(AngularJS控制器):
var init = function() {
$http.get('getSomeValues').then(function (res) {
var returnArray = res.data; // Result is array
for(var i=0; i < returnArray.length; i++) { // Loop through the array
console.log("THIS WORKS FINE: ", returnArray[i].value); // It works
$http.get('getOtherValues/' + returnArray[i].value).then(function (res) {
console.log("WHAT'S IN IT: ", returnArray[i].value); // Shows 'undefined' error
});
}
});
};
init();
所以基本上我想访问数组 returnArray ,但我不能。有没有什么好方法可以访问这些值?我假设'。然后(函数..'导致错误..
答案 0 :(得分:2)
您需要使用IIFE:
替换:
for(var i=0; i < returnArray.length; i++) { // Loop through the array
$http.get('getOtherValues/' + returnArray[i].value).then(function (res) {
console.log("WHAT'S IN IT: ", returnArray[i].value); // Shows 'undefined' error
});
}
使用:
for(var i=0; i < returnArray.length; i++) { // Loop through the array
(function(data){
$http.get('getOtherValues/' + data.value).then(function (res) {
console.log("WHAT'S IN IT: ", data.value); // Shows 'undefined' error
});
}(returnArray[i]))
}
这确保了对于for
循环的当前迭代,data
变量将设置为当前raturnArray
项。