在下面的代碼的局部變量,訪問在angularjs控制器
app.controller('Controller', function($scope, $http){
$scope.rep = [];
$scope.tot = {
name: '',
marketValue: 0,
cash: 0,
legend: 'none'
};
(function loadData(){
$http.get('result.json').
then(function(data) {
angular.forEach(data['data'],function(value, key){
$scope.rep[key] = value;
$scope.rep[key].marketValue = parseFloat(value.marketValue);
$scope.rep[key].cash = parseFloat(value.cash);
});
} ,
function(data) {
console.log("My error: " + data);
}
);
})(); // IIFE
for (var i = 0; i < $scope.rep.length; i++) {
$scope.tot.marketValue += $scope.rep[i].marketValue;
$scope.tot.cash += $scope.rep[i].cash;
}
});
$scope.rep
是在IIFE嵌套函數訪問的本地變量。
執行IIFE後,不再執行任何事情,冷靜終止執行。
控制檯不會給出任何錯誤消息。
爲什麼for循環不執行?
因爲AJAX代表「異步...」,並且你在'$ http'調用返回之前擊中循環。 – Antiga
http.get調用是異步的,所以當循環執行時,rep.length仍然是0。 – Karmacon