2016-07-04 15 views
0

同じ問題で他の回答を試みましたが、いずれもうまくいきませんでした。私は私の工場に電話しているところに問題があり、返信はundefinedです。AngularJSの工場出荷時のサービスで「未定義」が返されます

コントローラ(main.js):

app.controller('MainCtrl', ['$scope','beamAPI', function($scope, beamAPI){ 
    $scope.debug = 'Debug True'; 
    $scope.beamFollowers = 1; 
    console.log(beamAPI('amtraxtge')); 
}]); 

工場(beam.js):

app.factory('beamAPI', function($http) { 
    var APIuser = {}; 
    APIuser = function(user) { 
     $http.get('https://beam.pro/api/v1/channels/' + user). 
     then(function(res){ 
      console.log(res.data); 
      return res.data; 
     }); 
    } 
    return APIuser; 
}); 

コンソール:

undefined  main.js:4 
► Object  beam.js:6 

答えて

2

あなたAPIuser()は何も返しません。あなたが約束を返却する必要があると、コントローラに割り当てるか、コントローラでは、工場

APIuser = function(user) { 
     // return $http promise 
     return $http.get('https://beam.pro/api/v1/channels/' + user). 
     then(function(res){ 
      console.log('Factory log',res.data); 
      return res.data; 
     }); 
    } 

でデータ

のいずれかをログに記録する前に解決するために約束を待つ

beamAPI('amtraxtge').then(function(data){ 
    $scope.someProperty = data; 
    console.log('Controller log',data); 
}); 
+0

ちょうど$ http.getを(返します'https://beam.pro/api/v1/channels/' + user) –

関連する問題