我第一次尝试angular.js。 我的休息服务配置如下:
get('/api/users') //returns a JSON Array with all the users
get('/api/users/:id') //returns a JSON object with the requested ID
我的角度控制器设置如下:
UserCtrl.factory('User', function($resource) {
return $resource('/api/users/:id', { id: '@id' }, { update: { method: 'PUT' } });
});
var EditCtrl = function($scope, $location, $routeParams, User){
var id = $routeParams._id;
$scope.user = User.get({id: id});
};
我的问题是,当我跑
时User.get({id: id})
请求的URL是:
http://localhost:8080/api/users?id=389498473294
我希望它是
http://localhost:8080/api/users/389498473294
我可以使用$http
来做,但我认为.get()
应该可以做到这一点......
感谢
答案 0 :(得分:4)
使用带前缀的@定义id参数的默认值,这意味着必须从作为参数传递给调用的对象中获取该值。在get调用中没有发送对象,因此id参数被赋值为null值。 作为已分配的id参数,您传递的值将作为查询参数附加。 有关详细信息,请参阅Usage / Param默认段落下的angular documentation。 声明服务的正确方法应该是:
UserCtrl.factory('User',function($ resource){ return $ resource('/ api / users /:id',{id:''},{update:{method:'PUT'}}); });