这是我的代码
var exchange = angular.module('app', []);
exchange.controller('ExchangeController', ExchangeController);
function ExchangeController($scope, $http) {
$scope.items = [];
$http
.get(window.location.origin + "/api/get-item/", {
transformRequest: angular.identity,
headers: {'Content-Type': undefined, 'Process-Data': false}
})
.then(function(response){
$scope.items = response.data.items;
console.log($scope.items);
});
console.log($scope.items);
}
这里我的第一个控制台日志正常工作,但第二个显示未定义。为什么呢?
答案 0 :(得分:1)
第二个写入console.log($scope.items);
应该将一个空数组记录到控制台。原因是$http.get
正在执行异步调用。这导致then
块的代码执行被推迟到http请求完成,并允许其余代码继续。如果这是您对异步代码的第一次介绍,我建议您查看angular's documentation - 请参阅一般用法。和Javascript作为一个整体的承诺。
还要考虑我为您演示的example演示异步操作。
答案 1 :(得分:0)
这是因为$http
块正在运行异步。当来电到达console.log($scope.items)
时,http
请求可能尚未返回,因此该项目为undefined
。