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

时间:2014-11-03 01:11:46

标签: 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

}]);

请帮助我理解这个问题。

谢谢!

1 个答案:

答案 0 :(得分:5)

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

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

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

}]);