2013-07-09 8 views
53
$resource("/entries/:id", {id: "@id"}, {update: {method: "PUT"}}) 

Was ist @id?

Auf der $ ressource doc page sagt jemand das unten, aber ich verstehe immer noch nicht.

Wenn der Parameterwert mit @ dann dem Wert dieses Parameter vorangestellt wird, wird aus dem Datenobjekt extrahiert (nützlich für Nicht-GET Operationen).“Die Daten hier Objekt bezieht sich auf das postData Objekt, wenn nicht -get „Klasse“ Aktion verwendet wird, oder die Instanz selbst wenn nicht-GET Instanz Aktion verwendet wird.

Antwort

64

wenn ich das richtig verstehen, und ich kann nicht, wird der Parameter {id: @id} ist eine Darstellung einer anderen Art und Weise zu Geben Sie Ihre URL-Variable mit einem Datenelement an.

diese Methode Gegeben:

var myResource = $resource("/posts/:theName", 
          {theName: '@petName'}, 
          {enter : { 
             method: "POST", 
             isArray: false 
            } 
          }); 

Wenn ich ein Attribut „petname“ in den Daten, die ich bin, wird der Wert dieses Attributs der Veröffentlichung der Ausschreibung in :theName Variable in meiner URL platziert werden. Stellen Sie sich vor, die Postdaten sind {"petType": "cat", "petName": "Spot"}, die URL lautet "/posts/Spot". In meinen Augen bedeutet die @ "Attribut" des Objekts, das gebucht werden soll.

Nehmen Sie die @ von diesem Wert entfernt, und der URL-Variable des Wertes in diesem Ressourcenparameter direkt Referenz:

{theName: 'petName'} //no "@" 
// url output ----> '/posts/petName' 

.

Hier ist die Kette der Referenzen:

//url var--> //$resource param {..} --->//Object to be posted 
:theName---> {theName ----> @petName ---> {petName---> "Spot" 

Es dauerte nur 5 Schritten "Spot" in der URL zu bekommen!

.

Beispiel für eine Ressourceninstanz das obige Beispiel mit:

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"} 

Auf einer Seite zur Kenntnis, können die Dokumente sehr verwirrend sein. Haben Sie jemals einen schwierigen Kurs gemacht und der Professor war ein brillanter Mann, der kaum Ihre Sprache sprach? Jep.

+3

+1 für den letzten Teil: D. auch $ scope handle verspricht sehr gut – Ven

+0

danke, ich denke, ich bekomme es ... scheint wie es mehr Sinn machen würde, eine "Klasse" zu erstellen und diese von der Ressource erben ... es ist fast so, dass dies eine Membervariable ist, aber vielleicht ist das auch trüb. – James

+7

Das Ganze ist düster. Es gibt ungefähr 4 verschiedene Orte, an denen Sie URL-Parameter hinzufügen können. Wenn ich eine Ressource schreibe, mache ich es so einfach und klein wie möglich. Alles groß und ich benutze $ http. Aber das bin nur ich ... – rGil

Verwandte Themen