Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-使用NgRoute';控制器名称中的参数_Javascript_Angularjs_Routing_Angularjs Routing_Ngroute - Fatal编程技术网

Javascript AngularJS-使用NgRoute';控制器名称中的参数

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('/

我在AngularJS中设置了一条路线,带有一个可变参数

这是一个扩展;我可以在变量templateUrl中使用
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