2012-11-02 60 views
14

我學習AngularJS並讀取其API

Angular JS Resource

它說:「如果該參數值與@則該參數的值從數據對象中提取前綴」與代碼示例:

var User = $resource('/user/:userId', {userId:'@id'}); 
var user = User.get({userId:123}, function() { 
    user.abc = true; 
    user.$save(); 
}); 

我如此緩慢的例子後,我仍然沒有得到前綴@是什麼意思/一樣。有人請給我一些例子,有沒有@,並闡述它?謝謝...

回答

11

當然。

這意味着:userId在URL中值將與用戶對象id屬性要求屬性時進行更換。

那麼它什麼時候需要?當你對現有的用戶做某事時需要它,比如get,更新一個。創建用戶時不需要。

在大多數情況下,您希望在資源使用的REST URL中至少有一個以@開頭的參數(可能是對象ID)。如果你沒有一個,那就意味着爲了讓你保存一個對象的實例,你不需要知道它存儲在哪裏的任何信息。這意味着它是一個單例對象。也許就像一個設置對象。

這是你期待已久的例子:

var User = $resource('/user/:userId/:dogName', {userId:'@id', dogName:@dog}); 
User.get({userId:123, dog:'Matt'}, function() { .. }) 

會產生請求:GET /user/123/Matt

+3

我只是想你建議的代碼 - 它產生了微妙的不同GET請求:'/用戶/ 123/?狗= Matt'。角度是如何決定屬性是以GET參數(例如'dog')還是URL的一部分(這裏是'userId')發送的?在我的情況下,我想要一個用戶ID作爲URL的一部分發送,但沒有後續參數。可以這樣做嗎? –

+0

對不起,我沒有在幾個月內使用角。我不知道。 – mkoryak

+3

@Racing蝌蚪。由此產生的?dog = Matt是因爲發送的參數是dog而不是dogName。如果它是dogName,你會得到/ user/123/Matt。 – zszep