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

我希望这会导致对 /users/1 的 PUT 具有更改的属性。但它改为 POST 到 /users 并创建一个新用户(具有新 id 和新名称)。

有什么我做错了吗?

AngularJS v1.0.5
4

2 回答 2

8

您只需要告诉 $resource,他必须如何将路由参数“:id”与 JSON 对象绑定:

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

这应该工作,问候

于 2013-03-04T00:51:53.670 回答
0

感谢你的回答。它最终也对我有用。作为旁注,我使用的是 .NET WEB API,并且我的实体有一个 Id 属性(大写“I”)。PUT 和 DELETE 仅在我使用以下内容后才起作用:

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

希望能帮助到你。

于 2014-02-03T08:33:03.910 回答