angularjs - ¿Qué es @id según se pasa a $ resource?
ng-href angular 5 (2)
$resource("/entries/:id", {id: "@id"}, {update: {method: "PUT"}})
¿Qué es @id?
En la página de $ resource doc, alguien dice esto a continuación, pero todavía no entiendo.
Si el valor del parámetro tiene el prefijo @, entonces el valor de ese parámetro se extrae del objeto de datos (útil para las operaciones que no son GET). o la instancia en sí si se utiliza una acción de instancia no GET.
Si entiendo esto correctamente, y es posible que no, el parámetro {id: @id}
es una ilustración de otra forma de suministrar una variable a su variable url.
Dado este método:
var myResource = $resource("/posts/:theName",
{theName: ''@petName''},
{enter : {
method: "POST",
isArray: false
}
});
Si tengo un atributo "petName" en los datos que estoy publicando, el valor de ese atributo se colocará en :theName
variable :theName
en mi url. Imagine que los datos de la publicación son {"petType": "cat", "petName": "Spot"}
, el url leerá "/posts/Spot"
. En mi opinión, el @
significa "atributo" del objeto a publicar.
Quite la @
de ese valor, y la variable url hará referencia directa al valor en ese parámetro de recurso:
{theName: ''petName''} //no "@"
// url output ----> ''/posts/petName''
.
Aquí está la cadena de referencias:
//url var--> //$resource param {..} --->//Object to be posted
:theName---> {theName ----> @petName ---> {petName---> "Spot"
¡Solo se necesitaron 5 pasos para obtener "Spot" en la url!
.
Ejemplo de una instancia de recurso utilizando el ejemplo anterior:
var postData = new myResource();
postData.petType = "cat";
postData.petName = "Spot";
postData.$enter({}, function(data){
$scope.data = data;
})
// url to post to will be ''/posts/Spot'', postData object will be
// {"petType":"cat", "petName:"Spot"}
En una nota lateral, los documentos pueden ser muy confusos. ¿Alguna vez has tomado un curso difícil y el profesor era un hombre brillante que apenas hablaba tu idioma? Sip.
var myResource = $resource("/entries/:theName",
{theName: ''@petName''},
{update : {
method: "PUT",
isArray: false
}
});