我试图将我的逻辑从控制器转移到服务,因为我仍然是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函数之后没有附加。
我做错了什么?
答案 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');
}
});