次のように、いくつかのソースからAngularJSコントローラーにデータを読み込もうとしています-
var Controller = function ($scope, $http) {
var load = {
somekey: "/data/a.json",
someotherkey: "/data/b.json",
yetanotherkey: "http://restapi"
}
for (var i in load) {
$http({
url: load[i],
method: 'GET'
}).success(function (data, status, headers, config) {
$scope[i] = data; // <<---- this does not point to the right value of i
}).error(function (data, status, headers, config){
$scope[i] = "Error getting content for " + i;
});
}
}
i
ただし、コールバックがまだ実行されている間に変数の内容がループ内で変更されるため (つまり、辞書内のすべての値をループするのにかかる時間内に HTTP 要求が終了しないため)、このコードは機能していないようです。の最後の値i
が更新され、他のすべての値は使用されません。
この問題を回避するにはどうすればよいですか?