2012-11-02 22 views
14
Ben angularjs öğreniyorum

ve okuma onun API

Angular JS Resource

"parametre değeri o parametrenin değeri veri nesnesi elde edilir @ öneki ise" Diyor kod örneği ile:

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

Ben öneki @/does ne anlama geldiğini Örneğin sonra hala alamadım o kadar yavaş değilim. Birisi bana @ Olmadan ve Olmadan bazı örnekler verebilir ve detaylandırır mı? Teşekkürler ...

cevap

11

Elbette.

Bu, URL'nizdeki :userId değerinin, söz konusu özellik gerektiğinde kullanıcı nesnesinden id özelliği ile değiştirileceği anlamına gelir.

Ne zaman gereklidir? Varolan bir kullanıcıya bir şey yaptığınızda gerekli, get gibi, bir güncelleştirme. Bir kullanıcı oluşturduğunuzda gerekli değildir.

Çoğu durumda, kaynağın kullandığı REST URL'nizde @ ile öneki en az bir param olmasını istersiniz (büyük olasılıkla nesne kimliği). Eğer bir taneniz yoksa, bu, bir nesnenin örneğini kaydetmeniz için, depolandığı yer hakkında hiçbir şey bilmenize gerek olmadığı anlamına gelir. Bu, onun tek bir nesne olduğunu ima eder. Belki bir ayar nesnesi gibi.

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

isteği üretecek: uzun zamandır beklenen örnektir Burada

Sadece önerilen kod çalıştı /user/123/Matt

+3

GET - bir kurnazca farklı GET isteğini üretti: '/ user/123/? köpek = Matt'. Açısal değerlerin özelliklerin GET parametreleri olarak mı (örn. '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '''' olarak gönderilir) veya URL’nin bir parçası olarak (' userId'' olarak mı) gönderileceğine nasıl karar verirsiniz? Benim durumumda, URL'nin bir parçası olarak gönderilen bir kullanıcı kimliği istedim, ancak daha sonraki bir parametresi yoktu. Bu yapılabilir mi? –

+0

Üzgünüm, aylardır açısal olarak kullanmadım. Bilmiyorum. – mkoryak

+3

@Racing Tadpole. Oluşan "köpek = Matt", gönderilen parametrenin köpek ve köpek adı olmaması gerçeğidir. Eğer dogName olsaydı,/user/123/Matt alırdınız. – zszep