Comme indiqué dans le $resourceparamDefaults
documentation:
Compte tenu d'un modèle/chemin /: verbe et paramètre {verbe: 'saluer', Salutation: 'Bonjour'} résultats dans l'URL/chemin/salut? salutation = Bonjour.
Si la valeur du paramètre est préfixé avec @ la valeur de ce paramètre sera extrait de la propriété correspondante sur l'objet de données (fourni lors de l'appel d'une méthode d'action). Par exemple, si l'objet defaultParam est {someParam: « @someProp »} la valeur de someParam sera data.someProp
Cela donne à penser que tout verbe défini dans l'URL parameterizd qui correspond aux clés définies dans les paramètres par défaut de $resource
ou les paramètres des méthodes de classe $resource
(get, save, etc ..) auront la valeur correspondante de cette clé pour remplacer le verbe dans l'url. La notation « @ » d'autre part, n'a pas été expliquée correctement, dans ce contexte, il aurait dû être:
Si la valeur du paramètre est préfixé avec @ la valeur de ce paramètre sera extrait du correspondant propriété sur l'objet de données (fournie lors de l'appel d'une méthode d'action instance).
méthodes d'action de l'instance ($ obtenir, économiser $, supprimer $, etc ..), sont des méthodes qui sont utilisées pour objets de données récupéré à l'aide $resource
méthodes d'action de classe. Ils sont généralement utiles lors du chaînage de requêtes avec les mêmes ressources.
EXAMPLE DEMO
Supposons que votre cars/abc
retourne un JSON de réponse:
{
"id": "abc"
}
Lire les commentaires montrant les réponses de chaque appel de méthode d'action.
var myCarResource = $resource('cars/:carId',
{
carId:'@id'
});
// This sends a GET request '/cars/?id=abc
myCarResource.get({id:'abc'});
// This sends a GET request '/cars/abc'
myCarResource.get({carId:'abc'}); // returns {"id": "abc"}
myCarResource.get({carId:'abc'}).$promise.then(function(car) {
// sends a POST request '/cars/abc', it replaces the :carId verb from the
// @id notation you have defined in the parameter default. It also sends,
// other parameter defaults defined with '@' that are defined as verbs in the url.
car.$save();
});
Peut-être cela peut aider http://stackoverflow.com/questions/16677487/angularjs-resource-builds-wrong-resource-url – Yalamber