Come indicato nella documentazione $resourceparamDefaults
:
Dato un modello/percorso /: verbo e il parametro {verbo: 'salutare', saluto: 'Ciao'} risultati in URL/percorso/salutare? saluto = Ciao.
Se il valore del parametro è preceduto @ allora il valore di tale parametro sarà estratta dalla proprietà corrispondente dell'oggetto dati (disponibile quando si chiama un metodo action). Ad esempio, se l'oggetto defaultParam è {someParam: '@someProp'} allora il valore di someParam sarà data.someProp
Questo suggerisce che ogni verbo definito nell'URL parameterizd che corrisponde ai tasti definiti in i parametri predefiniti del parametro $resource
oi metodi della classe $resource
(get, save, ecc.) avranno il valore corrispondente di tale chiave sostituire il verbo nell'URL. La notazione '@' altro canto, non è stato spiegato correttamente in questo contesto, dovrebbe essere:
Se il valore del parametro è preceduto @ allora il valore per quel parametro saranno estratti dai corrispondenti proprietà sull'oggetto dati (fornito quando si chiama un metodo di azione di istanza).
metodi d'azione grado ($ ottengono, $ risparmiare, $ cancellare, ecc ..), sono metodi che vengono utilizzati per i dati oggetti recuperati utilizzando $resource
metodi di azione di classe. Di solito sono utili quando si concatenano richieste con le stesse risorse.
EXAMPLE DEMO
Supponiamo che il vostro cars/abc
restituisce un JSON risposta:
{
"id": "abc"
}
Leggere i commenti che mostrano le risposte di ciascun metodo di azione invocazione.
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();
});
Può essere questo può aiutare http://stackoverflow.com/questions/16677487/angularjs-resource-builds-wrong-resource-url – Yalamber