3

Disons que j'ai une ressource qui ressemble à ceci:angulaire: usine de ressource centralisée avec des promesses

angular.module('productsModule').factory('productFactory', function($resource) { 
    return $resource('/products/:id',{}, 
    {'query': {method: 'GET', isArray: false }}); 
}); 

Et maintenant, je peux l'utiliser dans un contrôleur comme ceci:

productFactory.query().$promise.then(function(products) { 
    // success 
    console.log(products); 
    $scope.products = products; 
}); 

Cependant, je J'aimerais déplacer cette fonctionnalité à l'usine afin que je puisse le faire dans n'importe quel contrôleur et il me procurerait la liste de produits tout en maintenant les promesses:

$scope.products = productFactory.products 

De cette façon, je pourrais avoir une ressource réutilisable centralisée. Comment puis-je réaliser cela dans Angular?

+0

Je ne suis pas sûr de ce que vous voulez réaliser. Qu'en est-il de '$ scope.products = productFactory.query()'? – zeroflagL

Répondre

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; 
}); 

Dans le contrôleur:

productFactory($scope, 'products'); 
1

En fait, vous pouvez faire avec ngResource, alors que les promesses indigènes ne déballent plus vous pouvez simplement faire:

$scope.products = productFactory.query(); 

En effet, faire .query sur un ngResource retournera un tableau vide qui sera automatiquement populaire lorsque la demande est retournée au client et exécutera un résumé.

Questions connexes