【发布时间】:2015-02-10 22:10:23
【问题描述】:
AngularJs 文档说您可以在配置 $routeProvider 时在路由对象中为控制器和 templateUrl 指定字符串或函数,但是在使用函数根据 $ 动态确定控制器时遇到了问题位置参数。我有以下路由配置:
$routeProvider
.when( '/workspace/:workspaceId/product/:productId/item/:itemType/:itemId/edit', {
templateUrl: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'topic.tpl.html';
case 'course':
return 'course.tpl.html';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
},
controller: function ( param ) {
switch ( param.itemType ) {
case 'topic':
return 'TopicController';
case 'course':
return 'CourseController';
}
throw new Error( "Unknown product item type '" + param.itemType + "'" );
}
} );
加载应用程序时出现以下错误:
Error: [$injector:unpr] Unknown provider: paramProvider <- param
我在这里遗漏了什么明显的东西吗?将控制器切换为使用字符串而不是函数可以解决此问题。
看起来有些人以前遇到过这个问题(例如here),但我很困惑为什么这不起作用,因为文档表明它应该这样做。
任何帮助将不胜感激!
约瑟夫。
【问题讨论】:
-
param 来自哪里,你想做什么?为什么你不能为他们创建两条路线而不是动态路线?
-
我认为 Angular 提供了它(与 templateUrl 的方式相同)?创建两条路线绝对是一种选择,但我认为我也可以这样做。
-
param可能意味着$routeParams? -
将其设置为 $routeParams 可以消除错误,但不会加载命名控制器。看起来如果您提供一个函数,那么 Angular 会尝试将该函数用作控制器,而不是使用它来提供控制器名称
-
尝试在 -function ( param ) { switch ( param.itemType ) { case 'topic': return 'TopicController';案例“课程”:返回“课程控制器”; }()
标签: javascript angularjs