AngularJS:将$ http.get数据分配给变量

时间:2014-12-03 08:48:24

标签: javascript angularjs angularjs-scope angularjs-controller angularjs-http

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

$httpasynchronous函数。它立即返回,但它返回promise而不是真实结果。请求完成后,将调用onsuccess

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