Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS,无法访问$scope.variableName_Angularjs_Angularjs Scope_Angular Http - Fatal编程技术网

AngularJS,无法访问$scope.variableName

AngularJS,无法访问$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();

我是AngularJS新手,有一个奇怪的问题,我无法访问$scope.name。在FactoryDataService中,我有一个方法getData,它使用$http.get

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调用中的数据保存到服务中。并让控制器调用服务中的函数来检索数据。视图绑定将自动更新: