我刚开始学习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
}]);
请帮助我理解这个问题。
谢谢!
答案 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);
}]);