2016-07-02 10 views
0

jsonデータを返してコントローラから呼び出すが、空になっているファクトリを作成しました。 私はどこで間違ったのか分かりません。 なしコンソールエラーとネットワーク jsonもあります。配列内のjsonデータを取得するための角型jsリソース呼び出し

'use strict'; 
var app = angular.module('angularJson', ['ngResource']); 

    app.factory('loadJsonService', ['$resource', function ($resource) { 
     return { 
      getData: function() { 
       return $resource('json/productDetails.json'); 
      } 
     }; 
    }]) 

    app.controller('angularJsonCtrl',['$scope', 'loadJsonService',function($scope, loadJsonService){ 

    $scope.loadProducts = function(noOfData){ 
     $scope.productDetails = []; 
     $scope.productDetails = loadJsonService.getData().query(); 
    } 

    }]); 
+1

リクエストは非同期です。まだ完了していないので、何も返されません。約束を使う必要があります。 – Daedalus

+0

[ngResource Doc](https://docs.angularjs.org/api/ngResource/service/$resource)をご覧ください。 –

答えて

3

のようなのgetData関数セットの$ httpリクエストにあなたは要求があっ&を完了しますまで、あなたが.$promise.then$resource.query以上の関数呼び出しを使用する必要があります後に待機入れている必要があります。あなたがAPI呼び出しの成功を呼び出す関数を置くことができるように。

loadJsonService.getData().query().$promise.then(function(res){ //success function 
    $scope.productDetails = res; 
}, function(error){ //error function 
    console.log(error); 
}) 
+0

。$ promiseのユーティリティは何ですか?私はいつもそうしています。 – sylvain1264

+0

@ sylvain1264私が知る限り、 '$ promise'は元のサーバとのやりとりの約束を返します..サーバから返されるデータの前に解決されるかもしれません –

+0

ありがとう@PankajParkar –

0

あなたはこの

$http.jsonp("json/productDetails.json") 
     .success(function(response) { 
      callback(response); 
     }); 
+0

$リソースで十分ですが、なぜ$ httpに再び切り替えることを提案しますか。 –

+0

は、$ resourseの代わりに$ httpを使用できますか? –

+0

人はいません。$リソースは、$ httpサービスよりも成熟して効率的です。$リソースは、API呼び出しでうまくプレーします。 –

0

queryメソッドを組み込んでみてください。 独自のgetメソッドを作成する場合は、

{ 
    method: 'GET', 
    params: { 
    key: value 
}, 
isArray: true, 
cache: true // if you want to cache 
} 
関連する問題