2013-03-03 20 views
7
// Set up the $resource 
$scope.Users = $resource("http://localhost/users/:id"); 

// Retrieve the user who has id=1 
$scope.user = $scope.Users.get({ id : 1 }); // returns existing user 

// Results 
{"created_at":"2013-03-03T06:32:30Z","id":1,"name":"testing","updated_at":"2013-03-03T06:32:30Z"} 

// Change this user's name 
$scope.user.name = "New name"; 

// Attempt to save the change 
$scope.user.$save(); 

// Results calls POST /users and not PUT /users/1 
{"created_at":"2013-03-03T23:25:03Z","id":2,"name":"New name","updated_at":"2013-03-03T23:25:03Z"} 

Bunun, değiştirilen özniteliğe/kullanıcılara/1'e neden olacağını umuyorum. Ancak bunun yerine/kullanıcılar için POST ve yeni bir kullanıcı oluşturur (yeni adla birlikte yeni adla birlikte).

Yanlış yaptığım bir şey var mı?

AngularJS v1.0.5 
sadece o rota-parametre bağlama zorundadır nasıl $ kaynak anlatmak gerekir

cevap

8

: JSON nesnesi ile "id":

$scope.Users = $resource("http://localhost/users/:id",{id:'@id'}); 

Bu işe Saygılarımızla gerektiğini

+1

Buraya% 90 teşekkürler, güncellenmiş kullanıcıyla/kullanıcıları/1'e şimdi gönderir. Ama şimdi nasıl POST yerine PUT yapmak? Çok yakın. –

+0

Tasarım tarafından POST sanırım. Yeni bir kaynak olduğunda ve mevcut bir kaynak için bir güncelleme olduğunda PUT'ye "kaydet" i geçersiz kılmam gerekecek. POST, $ resource ("/ users /: id", {'id': '@id'} yerine PUT hakkındaki soruyu yanıtlamak için http://docs.angularjs.org/api/ngResource.$resource –

+15

{güncelleme: {yöntemi: 'PUT'}}); PUT için hile yapar. User.update (kullanıcı) veya kullanıcı. $ Güncellemesini, User.save (kullanıcı) ve kullanıcı. $ Kaydetme biçiminde arayın. –

0
Cevabınız için

teşekkürler. Sonunda benim için de çalıştı. Bir yan not olarak, .NET WEB API kullanıyordum ve varlığımın bir Kimlik özelliği (UPPER CASE "I") var.

$scope.Users = $resource("http://localhost/users/:Id",{Id:'@Id'}); 

Umarım yardımcı olur: PUT ve aşağıdaki kullanılan sonra çalıştı SİL.

+1

.NET kullanmak, '{Id: '@ Id'}' i eklemeniz gerekip gerekmediğini etkilemez – Arion