AngularJS,无法访问$scope.variableName
我是AngularJS新手,有一个奇怪的问题,我无法访问$scope.name。在FactoryDataService中,我有一个方法getData,它使用$http.getAngularJS,无法访问$scope.variableName,angularjs,angularjs-scope,angular-http,Angularjs,Angularjs Scope,Angular Http,我是AngularJS新手,有一个奇怪的问题,我无法访问$scope.name。在FactoryDataService中,我有一个方法getData,它使用$http.get angular.module("app", []).factory("DataService", function($q, $http) { var service = {}; service.getData = function() { var deferred = $q.defer();
angular.module("app", []).factory("DataService", function($q, $http) {
var service = {};
service.getData = function() {
var deferred = $q.defer();
$http.get(apiPath).success(function(data) {
deferred.resolve(data);
}).error(function(data, status) {
deferred.reject('Error: ' + status);
});
return deferred.promise;
};
return service;
}).controller("DataController", ["$scope", "DataService", function($scope, DataService) {
$scope.datas = [];
DataService.getData().then(function(data){
$scope.datas = data;
}, function(error) {
console.log(error);
});
console.log($scope.datas); // it returns []
}]);
我不明白为什么它返回一个空数组。当您调用时。那么您正在解析一个异步承诺。在将数据实际分配给变量之前,您正在登录console。我如何解决此问题?请将console.log移到.then函数中。好的,谢谢您的回答。但是在.then块之外,我无法访问返回的数据,对吗?事实上,我想把数据从区块中取出。一旦承诺得到解决,你就可以访问它。例如,如果该作用域变量位于{datas}}某处视图中的数据绑定中,那么在解析承诺并执行数据赋值时,angular将更新该作用域,它将显示在视图中。通常,您希望将$http调用中的数据保存到服务中。并让控制器调用服务中的函数来检索数据。视图绑定将自动更新: