Http 如何将响应数据放入AngularJS中的全局作用域数组?
我想将http响应的数据永久地放入作用域数组中,以便在我的控制器中全局访问它: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
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
,则在成功回调中将其设置为新数组时可能会遇到一些问题,因为原来绑定的数组将被替换。如果出现如中所述的问题,可以尝试清空数组并将内容推送到现有数组。