2016-07-04 86 views
0

我已经尝试了其他答案,但是都没有工作。我有问题,我打电话给我的工厂,我得到undefined回报。AngularJS工厂服务返回'undefined'

控制器(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/'+用户) –