Angular-stateParams在路线解决?

时间:2015-12-25 22:04:59

标签: javascript angularjs

让我的头围绕路线解析并想知道以下列方式使用$ stateParams是否可以。

 .state('movie', {
            url:'/movie/:id',
            templateUrl: 'partials/movie.html', 
            controller: 'MovieController',
            controllerAs: 'vm',
            resolve: {
                movie: function(movieService){
                    return movieService.getMovie($stateParams.id);
                }
            }
        });

考虑到URL在路由解析之前不会改变,id参数是否仍会传递给函数?

由于id是从stateParams中拉出来的,状态不会改变直到路线被解决,这是否意味着以这种方式使用它不会起作用?

谢谢,圣诞快乐: - )

1 个答案:

答案 0 :(得分:3)

是。它会起作用,但只是稍微调整你的代码:

.state('movie', {
        url:'/movie/:id',
        templateUrl: 'partials/movie.html', 
        controller: 'MovieController',
        controllerAs: 'vm',
        resolve: {
            movie: function(movieService, $stateParams){
                return movieService.getMovie($stateParams.id);
            }
        }
    });

请注意“$ stateParams”作为resolve方法中的参数。