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

@idとは何ですか?

$リソースdoc pageで誰かがこれを以下に述べていますが、私はまだ理解しません。

パラメータ値がその パラメータがデータ・オブジェクト(非GET 操作するために有用)から抽出され、次いで値@が付いている場合。非 場合、」ここでデータオブジェクトがpostDataオブジェクトを参照-GET「クラス」アクションが使用されている、またはインスタンス自体非GET インスタンスのアクションが使用されている場合。

答えて

64

私はこれを正しく理解し、そして私がいない可能性がある場合は、パラメータ{id: @id}はへの別の方法の説明図でありますURL変数にデータを入力してください。

この方法を考える:私は、私が投稿していたデータに属性「petName」を持っている場合は、その属性の値は、私のURLで:theName変数に格納されます

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

を。投稿データが{"petType": "cat", "petName": "Spot"}であるとすると、URLは"/posts/Spot"となります。私の考えでは、@は、投稿されるオブジェクトの「属性」を意味します。

その値から@を奪うと、url変数は、直接そのリソースのパラメータの値を参照します:

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

を。それが唯一のURLに「スポット」を得るために5つのステップを取っ

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

は、ここで参照のチェーンです!

。上記の例を使用して、リソースインスタンスの

例:サイドノートで

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

、ドキュメントは、非常に混乱することができます。あなたは難しいコースを取ったことがありますか?教授はあなたの言語をほとんど話していない素晴らしい人でしたか?うん。

+3

最後の部分は+1です。また、$スコープハンドルは非常によく約束します – Ven

+0

ありがとう、私はそれを得ると思う...それは "クラス"を作成し、リソースから継承しているより意味があるようだ...そのほぼ同じようにメンバ変数、多分それも暗いかもしれない – James

+7

全体が暗いです。 URLパラメータを追加できる場所は約4つあります。私がリソースを書くとき、私はできるだけシンプルで小さくします。何か大きいと私は$ httpを使用します。しかし、それは私だけです... – rGil

関連する問題