【发布时间】:2015-10-08 13:14:49
【问题描述】:
我正在努力让$resource 服务按预期运行。我尝试关注documentation 和tutorial,它们似乎提供了一个完整的工作实现。但是使用这个我遇到了两个问题。
我的(非常基本的)实现:
$resource-服务:
app.factory('User', function ($resource) {
return $resource(
'myurl/user/:id',
{id: '@_id'},
{
update: {method: 'PUT'}
}
);
});
我如何在我的控制器中调用它:
$scope.user = User.get({id:$scope.myId});
//save a new user:
$scope.user.$save(function(){location.href = '#/mainpage';});
//delete a user
$scope.user.$delete({id:$scope.myId},function(){location.href = '#/mainpage';});
//update a user
$scope.user.$update({id: user.id}, function(){location.href = '#/mainpage';});
我的问题:
编辑:感谢 Andre Kreienbring 解决。 为什么我必须为
$delete服务指定 ID{id:$scope.myId}?根据上面的链接,这应该自动完成。但是,如果我跳过这个,DELETE 会转到myurl/user而不是myurl/user/{myId}。-
GET 返回一个承诺,因此
$scope.user包含属性$promise和resolved以及用户特定的属性。如果我通过 PUT 将其发送到我的 REST API,请求将被拒绝,因为后端无法将请求正文解析为User-Object。无法识别的字段“$promise”,未标记为可忽略
为了解决这个问题,我尝试在承诺实现时提取数据:
$scope.user = User.get({id:$scope.myId});
$scope.user.$promise.then(function(data){$scope.test = data});
上述代码中的$scope.test 仍然包含$promise 和resolved 属性。如何将“干净”的 JSON 对象发送到不包含 $promise 的 REST API?
【问题讨论】:
标签: javascript json angularjs rest