AngularJS工厂服务返回'undefined'

时间:2016-07-04 01:27:21

标签: javascript angularjs

我尝试过同样问题的其他答案,但都没有奏效。我有问题,我打电话给我的工厂,我得到undefined返回。

Controller(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

1 个答案:

答案 0 :(得分: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);
});