2014-09-15 56 views
5

Ben angularjs ile acemiyim ve bu kodda benim hata bulamıyorumangularjs Kaynak URL

var myCarResource = $resource('cars/:carId', 
     { 
      carId:'@id' 
     }); 
    var car = myCarResource.get({id:'abc'}); 

Beklenen URL: .../cars/abc

denilen URL: .../cars?id=abc

kullanıyorum angularjs v1.2.24

Herkes bana yardımcı olabilir mi? Teşekkür $resourceparamDefaults belgelerinde belirtildiği üzere

+2

bu yukarıda @Yalamber yorum/bağlantısından http://stackoverflow.com/questions/16677487/angularjs-resource-builds-wrong-resource-url – Yalamber

cevap

5

:

Verilen bir şablon/yol /: fiil ve parametre {fiil: 'selamlıyorum', selamlama: 'Merhaba'} URL'de sonuçları/yol/selamlamak? selamı = Merhaba. Parametre değeri veri nesnesine karşılık gelen özelliğinden ekstre olacağı parametresinin değeri sonra @ öneki ise (eylem yöntem çağırma sağlanan)

. Daha sonra someParam değeri Bu parameterizd URL'de tanımlanan herhangi bir fiil tanımlanan anahtarları ile uyumlu olduğunu düşündürmektedir data.someProp

olacaktır: Örneğin, halinde defaultParam nesne { '@someProp' someParam} olduğu $resource 's parametre varsayılanları veya $resource sınıf yöntemleri (alın, kaydedin, vb.) parametreleri, bu anahtarın ilgili değerine, url'deki fiili değiştirir. Öte yandan '@' gösterimi, bu bağlamda uygun şekilde izah değil, olması gereken: Parametre değeri bu parametresinin değeri sonra @ öneki

Eğer karşılık gelen ekstre edilecek veri nesnesindeki özellik (örneği eylem yöntemini çağırırken sağlanır).

Örnek eylem yöntemleri ($ .. $ vb silmek, $, olsun kaydedin), verileri için kullanılan yöntemlerdir nesneleri$resource sınıf eylem metodları alınan. Bunlar, aynı kaynaklarla istekleri zincirleme sırasında genellikle yararlıdır. Her eylem yöntemi çağırma tepkilerini gösteren yorumları okuyun

{ 
    "id": "abc" 
} 

: EXAMPLE DEMO

senin cars/abc bir tepki json döndürür olduğunu varsayalım.

var myCarResource = $resource('cars/:carId', 
{ 
    carId:'@id' 
}); 


// This sends a GET request '/cars/?id=abc 
myCarResource.get({id:'abc'}); 

// This sends a GET request '/cars/abc' 
myCarResource.get({carId:'abc'}); // returns {"id": "abc"} 

myCarResource.get({carId:'abc'}).$promise.then(function(car) { 

    // sends a POST request '/cars/abc', it replaces the :carId verb from the 
    // @id notation you have defined in the parameter default. It also sends, 
    // other parameter defaults defined with '@' that are defined as verbs in the url. 
    car.$save(); 

}); 
+0

yardımcı olabilir olabilir, başka bir seçenek aşağıdaki yapmaktır : 'myCarResource.({}, {id: 'abc'}); 'Sınırlı anlayışımdan, ilk nesnenin doğrudan URL kalıbıyla ilişkili olduğuna inanıyorum ve bu nedenle: URL'deki param: dava, carId). İkinci nesne '@id' kullandığınızda kullanılan ve ikinci nesnenin kimliğini çekip aşağıdakiyle eşleştiren nesne: carId –

İlgili konular