Javascript 服务中的返回响应
我正试图将我的逻辑从控制器转移到服务,因为我对AngularJS还是新手 我试图从一个内部API获取一些数据并将其返回到控制器的作用域,尽管我这样做的方式是返回一个空对象 这是我的控制器Javascript 服务中的返回响应,javascript,angularjs,Javascript,Angularjs,我正试图将我的逻辑从控制器转移到服务,因为我对AngularJS还是新手 我试图从一个内部API获取一些数据并将其返回到控制器的作用域,尽管我这样做的方式是返回一个空对象 这是我的控制器 cbApp.controller('serversCtrl', function($scope, serversService){ $scope.servers = serversService.getServers(); console.log($scope.servers); // retu
cbApp.controller('serversCtrl', function($scope, serversService){
$scope.servers = serversService.getServers();
console.log($scope.servers); // returns Object {}
});
这是我的服务,我可能做错了
cbApp.service('serversService', function($http){
var servers = {}
this.getServers = function(){
$http.get(BASE_URL + '/api/s').success(function(response){
servers = response.servers;
});
return servers;
}
});
似乎servers=response。在get函数之后,服务器未连接
我做错了什么?当console.log($scope.servers)时,您的承诺还没有完成代码>运行
您仍然应该在控制器中处理承诺(直到您开始使用路由器的解析
,但每次只执行一步)
以下是更改代码的方法:
cbApp.controller('serversCtrl', function($scope, serversService){
serversService.getServers().success(function(servers) {
$scope.servers = servers;
});
});
cbApp.service('serversService', function($http){
this.getServers = function(){
return $http.get(BASE_URL + '/api/s');
}
});
如果你是AngularJS的新手-你可能是承诺的新手。下面的答案是正确的,但你应该先通读一遍。