AngularJS - 在控制器名称中使用 NgRoute 的参数
AngularJS - Using NgRoute's params in a controller name
我在 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}}
路由以及 {{lesson}}Ctrl
控制器。
这可能吗?
否 - 控制器名称是静态的 - 它们是函数,在我们启动我们的应用程序之前编译。更多信息 here.
但是,可以根据 ngController
将控制器动态添加到视图。更多信息 here
您可以执行如下操作,而不是更清洁的操作。但它会起作用
controller: function($scope, $controller, $routeParams){
$controller($routeParams.lesson + 'Ctrl', {$scope: $scope});
}
处理这种情况会更容易,如果您查看 ui.router
,其中 controllerProvider
会像您尝试的那样工作。
我在 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}}
路由以及 {{lesson}}Ctrl
控制器。
这可能吗?
否 - 控制器名称是静态的 - 它们是函数,在我们启动我们的应用程序之前编译。更多信息 here.
但是,可以根据 ngController
将控制器动态添加到视图。更多信息 here
您可以执行如下操作,而不是更清洁的操作。但它会起作用
controller: function($scope, $controller, $routeParams){
$controller($routeParams.lesson + 'Ctrl', {$scope: $scope});
}
处理这种情况会更容易,如果您查看 ui.router
,其中 controllerProvider
会像您尝试的那样工作。