Http 如何将响应数据放入AngularJS中的全局作用域数组?

Http 如何将响应数据放入AngularJS中的全局作用域数组?,http,angularjs,Http,Angularjs,我想将http响应的数据永久地放入作用域数组中,以便在我的控制器中全局访问它: function myCtrl($scope, $http){ $scope.data = []; $http.get('myurl').success(function(data, status) { $scope.data = data; }); console.log($scope.data)// the output is an empty array, it didn

我想将http响应的数据永久地放入作用域数组中,以便在我的控制器中全局访问它:

function myCtrl($scope, $http){    
$scope.data = [];
$http.get('myurl').success(function(data, status) {

       $scope.data = data;
        });
console.log($scope.data)// the output is an empty array, it didn't change
...
}
我做错了什么?如何将响应数据提取到作用域数组(例如:$scope.data)?

在您执行
console.log
时,.get请求/响应尚未完成。您应该将
console.log
放在成功回调中,如下所示:

$http.get('myurl').success(function(data, status) {
    $scope.data = data;
    console.log($scope.data); // the output should be set
});

我对控制台.log()不感兴趣,它只是用来演示的。正如我的问题所说,我想要的是将响应的数据获取到
$scope.data
中,并在success函数之外访问它……只要success函数中返回的数据是您所期望的,您的代码就应该正常工作。执行
$scope.data=数据
应将作用域的
数据
变量设置为结果,并在执行回调后可在该控制器的作用域内访问。如果您想在其他控制器中访问它,请查看另一个注意事项:如果您试图绑定到UI中的
$scope.data
,则在成功回调中将其设置为新数组时可能会遇到一些问题,因为原来绑定的数组将被替换。如果出现如中所述的问题,可以尝试清空数组并将内容推送到现有数组。