我正在尝试在$ routeProvider路由的resolve方法中使用路由参数。这是我的代码:
.when('/agency/edit/:agencyId',
{
controller: 'agencyController',
templateUrl: baseUrl + 'Content/templates/agencyUpsert.html',
resolve: {
agency: ['$routeParams', 'agencyService', function ($routeParams, agencyService) {
return agencyService.getAgency($routeParams.agencyId);
}]
}
})
正如您所看到的,我正在尝试通过$routeParams.agencyId
访问它,但我也直接尝试agencyId
(希望它可以在路由的内容中使用),但它未定义。
如何成功引用它?
答案 0 :(得分:3)
您应该使用$route
而不是$routeParams
来引用它:
.when('/agency/edit/:agencyId',
{
controller: 'agencyController',
templateUrl: baseUrl + 'Content/templates/agencyUpsert.html',
resolve: {
agency: ['$route', 'agencyService', function ($route, agencyService) {
return agencyService.getAgency($route.current.params.agencyId);
}]
}
})
来自docs:
请注意,$ routeParams仅在路由更改成功完成后更新。这意味着您不能依赖路由解析函数中的$ routeParams正确。相反,您可以使用$ route.current.params来访问新路由的参数。