3

我尝试将 $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 打印为未定义之后。

4

2 回答 2

8

这是因为$http.get是异步的。因此,在 ajax 请求完成之前,您的代码不会被搁置,而是会执行其余代码。所以你的第二个console.log将在 ajax 请求完成之前执行。此时没有调用范围变量$scope.results,仅在请求完成后定义,这就是它打印的原因undefined。您的第一个console.log将仅在$httpajax 成功完成后打印,此时您已$scope.results分配给data来自后端的。

于 2014-12-03T08:51:54.480 回答
2

$http是一个asynchronous函数。它会立即返回,但是它返回的promise不是真实的结果。当请求完成时onsuccess被调用。

第二个(调用之外的那个)在返回console.log之前执行。$http

于 2014-12-03T08:53:00.083 回答