AngularJS - 在控制器名称中使用NgRoute&#s;参数

时间:2016-04-30 07:15:04

标签: javascript angularjs routing angularjs-routing ngroute

我在AngularJS中设置了一个路径,其中包含一个可变参数。

这是this question的延伸;我可以在变量templateUrl中使用params,如下所示:

.when('/course/:lesson', {
    templateUrl: function(params){
         return '/partials/course/' + params.lesson;
    }
    //...
})

但是,如果我尝试为变量控制器名称执行某些操作,则会出现unknown provider错误

.when('/course/:lesson', {
    templateUrl: function(params){
         return '/partials/course/' + params.lesson;
    },
    controller: function(params){
         return params.lesson + 'Ctrl';
    }
})

基本上,我不是编写100条完全遵循完全相同结构的不同路线,而是想采用lesson变量,并将其映射到/partials/course/{{lesson}}路线以及{{1控制器。

这可能吗?

2 个答案:

答案 0 :(得分:3)

你可以做类似下面的事情,而不是更清洁的事情。但它会起作用

controller: function($scope, $controller, $routeParams){
     $controller($routeParams.lesson + 'Ctrl', {$scope: $scope});
}

如果你看ui.router data-validation-error-msg="Please enter your first name"controllerProvider会像你尝试的那样工作,那么处理这种情况会更容易。

答案 1 :(得分:0)

否 - 控制器名称是静态的 - 它们是在我们启动应用程序之前编译的函数。更多信息here

但是,可以根据ngController动态添加控制器以进行查看。更多信息here