从服务返回数据,而不是承诺

时间:2014-04-15 15:55:28

标签: angularjs

我希望有一个更清洁的控制器,不要用api api的东西搞砸它。

以下是我所谈论的一个例子:

一些服务

...
.service('SomeService', function SomeService($http) {
  this.getAllItems = function() {
    return $http.get('api/items')
      .success(function(data) {
        return data;
      });

控制器

...
SomeService.getAllItems().then(function(response) {
  $scope.items = response.data;
});
...

我试图避免对承诺进行额外的函数调用,并直接分配项目,如下所示:

$scope.items = SomeService.getAllItems();

这可能吗?我已经尝试在服务中调用then,并且一旦它在控制器中解析,它仍然会返回一个promise对象,但我可能做错了。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用$resource类来执行此操作。这是from the documentation

  

重要的是要意识到调用$ resource对象方法   立即返回一个空引用(对象或数组取决于   IsArray的)。一旦数据从服务器返回现有数据   引用填充了实际数据。这是一个有用的技巧   因为通常将资源分配给当时的模型   由视图呈现。拥有一个空对象导致无法渲染,   一旦数据从服务器到达,则填充对象   随着数据和视图自动重新呈现自己显示   新数据。这意味着在大多数情况下,人们永远不必写一个   动作方法的回调函数。