我尝试将$ http.get中的数据分配给我的控制器中的变量。
$http.get(URL).success(function (data) {
$scope.results = data;
console.log('results in $http.get :'+ $scope.results);
});
console.log('results after http.get'+ $scope.results);
来自get的第一个控制台日志打印数据。在$ http.get(url)之后.success $ scope.results打印为未定义。
答案 0 :(得分:8)
这是因为$http.get
是异步的。因此,在ajax请求完成之前,您的代码不会被搁置,而是执行其余代码。所以你的第二个console.log
将在ajax请求完成之前执行。此时,没有名为$scope.results
的范围变量,仅在请求完成后定义,这就是它打印undefined
的原因。只有在console.log
ajax成功完成后才会打印您的第一个$http
,此时您已$scope.results
分配给来自后端的data
。
答案 1 :(得分:2)
$http
是asynchronous
函数。它立即返回,但它返回promise
而不是真实结果。请求完成后,将调用onsuccess
。
第二个(通话外的那个)console.log
在$http
返回之前执行。