2016-09-03 24 views
0

でオブジェクトにアクセスすることはできません:

 return { 
      getReport: function(data){ 
      var request = $resource(getResourcePath('report')); 
      return request.get(data, function(response) { 
       return response; 
      }).$promise; 
      } 
     } 

と、このコードは私のコントローラである:

ReportService.getReport(customStruct).then(function(response){ 
     console.log("respo", response); 
     $scope.reportData = {response} 
    }); 

    console.log("$scope1", $scope) 
    console.log("$scope2", $scope.reportData) 

が、私は$scope.reportDataにアクセスしようとすると、私が取得しますundefined。ここで$scope1$scope2出力のスクリーンショットです:

enter image description here

私は$scope.reportDataオブジェクトにアクセスできないのはなぜ?助けてくれてありがとう。

+1

'promises'としてコンソールログ' $ scope.reportData 'が非同期であるときに' promise'が解決されません。 – jaym

+0

あなたのコールバックの中でそれをコンソールにしよう –

+0

'console.log(" $ scope1 "、$ scope)'データが見えるときに '$ scope'はすでに応答オブジェクトで割り当てられています。それで、「約束」は正しかったと思われたのですか? – sg552

答えて

1

古典的な「どこにデータがありますか」の非同期質問に対処しているようです。 AngularとJavaScriptはhttp呼び出しからpromisesを返します。約束はちょっとボックスのようなもので、Angularはあなたに手を差し伸べて、「データが戻ったら、私はこのボックスに入れます。問題は、ボックス内のデータにアクセスしようとすると、そこにはない(あなたのconsole.logを含む)ということです。

ビューを読み込む前にデータが必要な場合は、$ routeProvider(ng-route)または$ stateProvider(ui-router)のresolve機能の使用を検討してください。たとえば:

$stateProvider.state('app.reports', { 
    url: 'reports/reports.html', 
    ... 
    resolve : { 
     reportData : function(ReportService) { 
      return ReportService.getReport(customStruct); 
     } 
    } 
}); 

は、その後、あなたのコントローラで、depenedencyようreportDataを指定:

.controller('someController', ['$scope', 
           'reportData', 
           function($scope, reportData){ 
    $scope.reportData = reportData; 
}]); 

これはreportDataはビューをロードする前に解決するのを待つ角度強制します。しかし、暗い面があります。返信に数ミリ秒以上かかる場合は、UI may feel unresponsiveです。

最終的な注意点がいくつか指摘されています。この行:

$scope.reportData = {response} 

私はあなたがオブジェクトの応答をラップすることによって達成しようとしているかどうかはわかりません。最後に、この行:

 return request.get(data, function(response) { 
      return response; 
     }) 

あなたは(ヘッダとレスポンスが成功した場合は必要ないかもしれないいくつかの他の嫌なものを含む)応答の代わりにresponse.dataを返すことを検討する必要があります。

幸運を祈る!

関連する問題