引用AngularJS $ routeProvider中的路由参数解析

时间:2015-07-24 14:01:14

标签: angularjs angular-routing

我正在尝试在$ 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(希望它可以在路由的内容中使用),但它未定义。

如何成功引用它?

1 个答案:

答案 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来访问新路由的参数。