我有这种状态转到用户配置文件编辑表单:
//state for edit User Profile
.state('users.edit', {
url: '/users/{id}/edit',
templateUrl: 'users/user-edit.html',
controller: 'UserEditCtrl',
resolve: {
user: ['$stateParams', 'users', function($stateParams, users) {
return users.get($stateParams.id);
}]
}
});
编辑个人资料按钮会发送正确的ID:
ng-href="#/users/{{user.id}}/edit"
当我点击它时会转到#/ users / 1 / edit,所以这里没问题。
GET模型:
angular.module('bidrp')
.factory('users', [
'$http',
function($http){
var o = {
users: [{email:"user@email.com"}]
};
o.get = function(id) {
return $http.get('/users/' + id + '.json').then(function(res){
return res.data;
});
};
return o;
}]);
当我单击编辑配置文件按钮时,它会向/users/edit.json发送一个get请求,我当然会收到错误500.它应该向/users/1.json发送一个GET请求。
为什么Angular认为“编辑”是我的ID,而不是{id}?
答案 0 :(得分:1)
看起来你正在使用ui-router。
路线通常位于www.example.com/#!/video/random_numbers/some-random-string
,但即使与:id
一起使用。
第二点是当你导航时,你不应该使用{id}
,而ng-href
就像:ui-sref
我为您创建了使用您的代码的工作解决方案(在控制台中打开网络选项卡也看到您的用户工厂的解决方案) http://plnkr.co/edit/pseDp460zJb2Na4AgjSh?p=preview (当您在script.js中评论38行时,您将拥有"正在运行的应用程序")