在AngularJS中的$http成功回调之外无法访问$scope变量值

$scope variable value not accessible outside of $http success callback in AngularJS

本文关键字:访问 scope 变量值 回调 中的 AngularJS http 成功      更新时间:2023-09-26

我刚开始学习AngularJS。

我创建了一个简单的应用程序来显示json文件中的内容。但是,分配给$http内部作用域的数据在外部返回未定义的数据。

var app= angular.module('app',[]); 
app.controller('apCtrl',['$scope','$http',function($scope,$http){
  $http.get('/path/to/data.json').success(function(){
   console.log(data); // returns data --working
   $scope.data=data; // assiged
   console.log($scope.data);  // returns data --working
  });
  console.log($scope.data); // returns 'undefined'  --not working
}]);

请帮我理解这个问题。

谢谢!

这是因为您正在进行异步调用。当您尝试从success函数外部调用数据时,数据没有准备好。查看文档。

例如,如果你等待几秒钟,它就会显示:

app.controller('apCtrl',['$scope','$http','$timeout',function($scope, $http, $timeout){
  $http.get('/path/to/data.json').success(function(){
   console.log(data); // returns data --working
   $scope.data=data; // assiged
   console.log($scope.data);  // returns data --working
  });
  $timeout(function(){
    console.log($scope.data);
  }, 2000);
}]);