2013-07-08 3 views
2

j'ai cette ressource:AngularJS intégrer promettent aux ressources

myModule.factory('MyResource', ['$resource', 'geoLocationService', function ($resource, geoLocationService) { 

    return $resource('/blabla', {}, { 
     'getData': { method: 'GET', params: { city: geoLocationService.getMyCity() } } 
    }); 
}]); 

Le problème est que le moment de l'appel MyResource.getData(), GeoLocationService n'ont pas fait pour aller chercher l'emplacement.
GeoLocationService a une promesse qui me permettra appeler

geoLocationService.promise.then(...) 

Mais je ne sais pas comment je peux intégrer cette promesse à la ressource. Une idée?

EDIT Je cherche quelque chose comme:

myModule.factory('MyResource', ['$resource', 'geoLocationService', function ($resource, geoLocationService) { 

    return $resource('/blabla', {}, { 
     'getData': { method: 'GET', beforeFetchPromise: geoLocationService.promise, { city: geoLocationService.getMyCity() } } 
    }); 
}]); 

Alors que lorsque geoLocationService.promise est résolu ou rejeté, l'appel ajax avec des paramètres se produira.

+0

Une mise à jour sur ce problème? –

Répondre

0

Je pense que vous devriez ajouter une promesse dans votre contrôleur:

$scope.resultsFromResource = YourResourceName.query().$promise.then(function(result){ 
    // code inside promise 
}) 

Je suggère également que vous pouvez soit utiliser la requête comme dans mon exemple ou de supprimer des guillemets simples autour de votre nom getData si vous voulez garder.

+0

Le geoLocationService() doit fonctionner avant l'appel à la ressource et non après. – Naor