我尝试过同样问题的其他答案,但都没有奏效。我有问题,我打电话给我的工厂,我得到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
答案 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);
});