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

lok*_*der 0 javascript angularjs angularjs-scope

我刚开始学习AngularJS.

我创建了一个简单的应用程序来显示json文件中的内容.但是,分配给$ http内部范围的数据,返回undefined外部.

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

}]);
Run Code Online (Sandbox Code Playgroud)

请帮我理解这个问题.

谢谢!

s.a*_*lem 5

这是因为你正在进行异步调用.当您尝试从成功函数外部调用数据时,不会准备数据.查看文档.

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

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);

}]);
Run Code Online (Sandbox Code Playgroud)