我们说我的资源看起来像这样:
angular.module('productsModule').factory('productFactory', function($resource) {
return $resource('/products/:id',{},
{'query': {method: 'GET', isArray: false }});
});
现在我可以在像这样的控制器中使用它:
productFactory.query().$promise.then(function(products) {
// success
console.log(products);
$scope.products = products;
});
但是,我想将这个功能移到工厂,以便我可以在任何控制器中执行此操作,它会在保持承诺的同时获得产品列表:
$scope.products = productFactory.products
这样我可以拥有一个集中的可重用资源。我如何在Angular中实现这一目标?
答案 0 :(得分:1)
你实际上可以使用ngResource执行此操作,而本机承诺不再需要解包,您只需执行此操作:
$scope.products = productFactory.query();
这是因为对ngResource执行.query
将返回一个空数组,当请求返回给客户端并运行摘要时,该数组将自动流行。
答案 1 :(得分:0)
angular.module('productsModule').factory('productFactory', function($resource) {
var res = $resource('/products/:id',{},
{'query': {method: 'GET', isArray: false }});
var fn = function ($scope, prop) {
res.query().$promise.then(function (products) {
$scope[prop] = products;
}
}
return fn;
});
在控制器中:
productFactory($scope, 'products');