Javascript AngularJS-使用NgRoute';控制器名称中的参数
我在AngularJS中设置了一条路线,带有一个可变参数 这是一个扩展;我可以在变量templateUrl中使用Javascript AngularJS-使用NgRoute';控制器名称中的参数,javascript,angularjs,routing,angularjs-routing,ngroute,Javascript,Angularjs,Routing,Angularjs Routing,Ngroute,我在AngularJS中设置了一条路线,带有一个可变参数 这是一个扩展;我可以在变量templateUrl中使用params,如下所示: .when('/course/:lesson', { templateUrl: function(params){ return '/partials/course/' + params.lesson; } //... }) 但是,如果我尝试对变量控制器名称执行某些操作,我会得到一个未知提供程序错误 .when('/
params
,如下所示:
.when('/course/:lesson', {
templateUrl: function(params){
return '/partials/course/' + params.lesson;
}
//...
})
但是,如果我尝试对变量控制器名称执行某些操作,我会得到一个未知提供程序
错误
.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
控制器
这可能吗?否-控制器名称是静态的-它们是函数,在我们启动应用程序之前编译。更多信息
但是,可以基于
ngController
动态地将控制器添加到视图中。更多信息你可以做下面的事情,而不是更干净的。但它会起作用的
controller: function($scope, $controller, $routeParams){
$controller($routeParams.lesson + 'Ctrl', {$scope: $scope});
}
如果您查看
ui.router
,处理这种情况会更容易,它的工作原理与您尝试的一样。控制器名称是静态的,但是您可以手动创建控制器实例。检查Panraj的答案。这太好了,我不知道你可以像这样传入$controller
!