【发布时间】:2015-08-15 22:04:23
【问题描述】:
我有一个基本的工厂返回一个名为 User: 的 $resource:
angular.module('appServices').factory('User', [
'$resource',
function($resource){
return $resource('http://localhost:3000/users/:username', {username:'@username'});
}]);
在我的 UserController.js 文件中,我尝试做一些相当简单的事情:
angular.module("myApp").controller('UserController', ['$scope', '$routeParams', 'User',
function($scope, $routeParams, User){
var user = new User({email:'user@example.com', username: 'johndoe', password: 'mySecurePassw0rd!'});
user.$save();
}]);
我希望 $save() 函数向 /users 发出 POST 请求,但是在控制台中我得到 http://localhost:3000/users/johndoe 404 响应,因为显然没有在服务器上为带有 username 参数的 POST 请求设置路由追加...
为什么在我的代码示例中会这样做?从我在互联网上看到的例子来看,$save() 函数没有考虑用户名,在我的情况下应该直接 POST 到/users。
任何帮助将不胜感激!
编辑
我想我得到了错误(一如既往,在 SO 上发布问题后立即...)
可能是因为我在$resource中指定的默认参数{username: "@username"},因为它希望默认有一个用户名参数?
所以正确的做法是从工厂返回这个资源:
return $resource('http://localhost:3000/users/:username');
正确吗?
【问题讨论】:
标签: angularjs ngresource