【发布时间】:2015-03-02 09:58:09
【问题描述】:
我有一个简单的 Angular 路由配置,带有主页和一些用户配置文件。出于某种原因,当我导航到/users/user_3 时,控制器请求用户索引路由users.json,而不是users/user_3.json。这导致User 服务抱怨:“动作get 的资源配置错误。预期响应包含一个对象但得到一个数组。”
此错误向我表明 $resource 知道它正在请求单个用户资源,但根据我在控制台中的摆弄,路由参数似乎已被正确捕获:
> $route = angular.element(document.body).injector().get('$route')
Object {routes: Object, reload: function, updateParams: function, current: Object}
> $route.current.params
Object {id: "user_3"}
所以似乎在捕获路由参数和发出实际服务请求之间的某个时间点,某事导致路由参数消失。
这是我的路线配置:
$routeProvider.when( '/', {
controller: 'HomeCtrl',
templateUrl: '/assets/views/home.html',
})
.when( '/users/:id', {
controller: 'UserCtrl',
templateUrl: '/assets/views/user.html',
});
我的用户服务:
angular.module('amn.services').service('User', [
'$resource', function($resource) {
return $resource('/users/:id.json', {
id: '@id'
});
}
]);
...和我的 UserCtrl:
angular.module('amn.controllers').controller('UserCtrl', function($scope, User) {
return User.get(function(data) {
return $scope.user = data;
});
});
谁能告诉我发生了什么事?谢谢!
【问题讨论】:
标签: angularjs ngresource ngroute