返回服务中的响应

时间:2015-05-26 23:37:27

标签: javascript angularjs

我试图将我的逻辑从控制器转移到服务,因为我仍然是AngularJS的新手。

我试图从内部API获取一些数据并将其返回到我的Controller的范围,尽管我这样做的方式是返回一个空的Object。

这是我的控制器。

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.servers在get函数之后没有附加。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

console.log($scope.servers);运行时,您的承诺尚未完成。

您仍然应该在控制器中处理承诺(直到您使用路由器resolve,但一次只使用一步)。

以下是您更改代码的方式:

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');
    }
});