2017-08-09 17 views
1

コントローラの「データコントローラ」でmovies変数の値を取得したいだけです。以下はapp.jsのための私のコードスニペットです:コントローラ内のサービスから値を取得できません

myApp.service('datatransfer', ['$http', function($http) 
     { 
      var service = this; 
      var movies; 
      service.getMovies = function() 
      { 
       $http.get('https://api.myjson.com/bins/54jf7').success(function(data) 
       { 
        movies = data; 
       }); 
       return movies; 
      }; 
     }]); 

     myApp.controller('DataController', ['$scope', '$http', '$location', 'datatransfer', function($scope, $http, $location, datatransfer) 
      { 
       $scope.loaded = false; 
       datatransfer.getMovies().then(function(data) 
       { 
        $scope.movies = data; 
        $scope.loaded = true; 
       }); 
       $location.path('/home'); 
      }]); 

サービス「データ転送」から、それは)映画の正しい値を返しているが、サービスは、コントローラとgetMovies(に注入されたときに使用され、それができます以下のエラー。 getMovies()によって返される値を使用することはできません。

angular.js:13642 TypeError: Cannot read property 'then' of undefined 
    at new <anonymous> (app.js:47) 
    at Object.invoke (angular.js:4708) 
    at P.instance (angular.js:10177) 
    at n (angular.js:9096) 
    at g (angular.js:8459) 
    at g (angular.js:8462) 
    at angular.js:8339 
    at angular.js:1782 
    at m.$eval (angular.js:17378) 
    at m.$apply (angular.js:17478) 

ありがとうございます。

答えて

1

だけthen

datatransfer.getMovies().then(function(response) { 
    $scope.movies = response.data; 
    $scope.loaded = true; 
}); 
+0

を使用して、コントローラでの約束がうん、「」そして「」がある$の約束で使用することになっているサービス

myApp.service('datatransfer', ['$http', function($http) { var service = this; var movies; service.getMovies = function() { return $http.get('https://api.myjson.com/bins/54jf7') } }]); 

キャッチからのHTTPリクエストを返します$ http.get(...)によって返されます。 – Maxwellt

+0

こんにちは@ sachila、ありがとう、その今働いている。 –

+0

@Kunal Tyagiいいね。 D –

関連する問題