Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript 为什么不是';t角度';s$scope可在我对谷歌应用程序引擎数据的调用中访问_Javascript_Angularjs_Google App Engine - Fatal编程技术网

Javascript 为什么不是';t角度';s$scope可在我对谷歌应用程序引擎数据的调用中访问

Javascript 为什么不是';t角度';s$scope可在我对谷歌应用程序引擎数据的调用中访问,javascript,angularjs,google-app-engine,Javascript,Angularjs,Google App Engine,我正在尝试创建一个控制器,从谷歌应用程序引擎获取数据,并允许我将其显示在页面上。问题似乎是数据(resp)可以在本地访问,但我似乎无法在函数之外访问它。如果我只使用javascript(…document.getElementById('getListingsResult').innerHTML=result;…),我就可以做到这一点,但如果我为Angular调用$scope,我将无法再访问它。有人知道我如何修复它,同时保留相同的结构来加载和调用gapi吗?这是我的密码: (编辑:添加了$sco

我正在尝试创建一个控制器,从谷歌应用程序引擎获取数据,并允许我将其显示在页面上。问题似乎是数据(resp)可以在本地访问,但我似乎无法在函数之外访问它。如果我只使用javascript(…document.getElementById('getListingsResult').innerHTML=result;…),我就可以做到这一点,但如果我为Angular调用$scope,我将无法再访问它。有人知道我如何修复它,同时保留相同的结构来加载和调用gapi吗?这是我的密码:

(编辑:添加了$scope.loadData,但问题仍然存在)


这是因为您正在进行异步调用。当您试图从回调外部访问$scope.data时,您的请求尚未完成,但仍在处理中。您必须确保您的请求已完成。

它应该可以使用promise。此外,代码中缺少request.execute函数的括号

检查以下代码(未测试):


谢谢我该怎么做?我只是尝试创建一个存储数据的变量temp,然后执行$scope.data=temp;在“…根);”之后,但它仍然不起作用。你能详细说明我在哪里分配范围吗?我还试着做var promise=gapi.client.load…,ROOT);然后(函数(数据){$scope.data=data;});但是仍然不走运:(谢谢。我尝试了你的代码,得到了一个错误“TypeError:无法读取未定义的属性'load'似乎有什么东西把它甩了。gapi.client.load?你检查过gapi.client是否存在吗?它存在并且在我使用常规javascript时工作正常。它一定引发了一个异常,但我不认为这真的是一个加载问题,因为我以前已经能够从该函数内部将内容打印到控制台。我认为它正在变得close-though.um,奇怪!您看到错误处的行号了吗?您可以使用调试器查找任何未定义的内容。这很奇怪。当我删除最后一个console.log($scope.data)时,它可以工作,但不一致。现在它似乎正在工作,希望它能继续工作,但我会尝试检查,看看它是否可能是数据存储问题。无论如何,非常感谢!
    phonecatControllers.controller('datastoreTestCtrl', ['$scope',  
        function($scope) {
            $scope.data;
           $scope.loadData = function() { 
           var ROOT = 'https://my_team.appspot.com/_ah/api';
           gapi.client.load('listingserviceapi', 'v1',  function(){
               console.log("reached step 1");
           var request = gapi.client.listingserviceapi.getListings();
           request.execute(function (resp){

                  if (!resp.code) {
                      // console.debug(resp);
                       console.log('loaded! :)');//returns loaded
                       resp.items = resp.items || [];   
                       $scope.data = resp.items;
           console.log($scope.data); //returns an array of data
                   }   
           };
        } , ROOT  );};
   $scope.loadData;
           console.log($scope.data); //returns [object, object] which is incorrect
    }]);
phonecatControllers.controller('datastoreTestCtrl', ['$scope', '$q',

function ($scope, $q) {
    $scope.data = null;

    $scope.loadData = function () {
        var deferred = $q.defer(),
            ROOT = 'https://my_team.appspot.com/_ah/api';

        gapi.client.load('listingserviceapi', 'v1', function () {
            console.log("reached step 1");
            var request = gapi.client.listingserviceapi.getListings();
            request.execute(function (resp) {
                if (!resp.code) {
                    // console.debug(resp);
                    console.log('loaded! :)'); //returns loaded
                    resp.items = resp.items || [];
                    //$scope.data = resp.items;
                    //console.log($scope.data); //returns an array of data
                    deferred.resolve(resp.items);
                }
            }); //---missing parenthesis here
        }, ROOT);

        return deferred.promise;
    };

    $scope.loadData().then(function (data) {
        $scope.data = data;
        console.log($scope.data); //returns [object, object] which is incorrect
    });
}]);