我希望有一个更清洁的控制器,不要用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对象,但我可能做错了。谢谢!
答案 0 :(得分:1)
您可以使用$resource
类来执行此操作。这是from the documentation
重要的是要意识到调用$ resource对象方法 立即返回一个空引用(对象或数组取决于 IsArray的)。一旦数据从服务器返回现有数据 引用填充了实际数据。这是一个有用的技巧 因为通常将资源分配给当时的模型 由视图呈现。拥有一个空对象导致无法渲染, 一旦数据从服务器到达,则填充对象 随着数据和视图自动重新呈现自己显示 新数据。这意味着在大多数情况下,人们永远不必写一个 动作方法的回调函数。