[英]Storing results of Angular Resource in Factory
我目前正在使用Angular $ resource制作api,并且希望将这些结果保存在服务中而不是控制器中,因为每次调用控制器时,都会再次调用结果,因此所做的所有更改都将被删除。
我尝试了几篇SO文章中给出的答案,包括:
AngularJS:使用共享服务(带有$ resource)在控制器之间共享数据,但是如何定义回调函数?
和
但是这些都不起作用,因为我需要将结果存储在服务中,但控制器可以访问。
任何帮助将不胜感激。
因为Angular的Services / Factories是单例,所以只要将回调的值放在services变量上,就可以从任何地方获取它。 样品:
angular.module('foo',[])
.service('FooService', ['$resource', function($resource){
this.users = []
$resource('/users')
.get(function(users) {
this.users = users
})
this.getUsers = function(){
return this.users
}
})
.controller('FooController', ['$scope','FooService', function($scope, FooService){
$scope.users = FooService.getUsers()
})
很高兴记住$ resource正在执行对后端的异步请求,因此,在尝试从服务中获取数据之前,最好保证此数据将可用。
始终使用诺言!
angular.module('foo',[])
.service('FooService', ['$resource', function($resource){
this.getUsers = function () {
return $resource('/users', .get().$promise;
};
})
.controller('FooController', ['$scope','FooService', function($scope, FooService){
FooService.getUsers()
.then(function (users) {
$scope.users = users;
});
});
您还可以将$resource('/users')
重构为UserResource
工厂,并将UserResource
注入服务中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.