我正在尝试在角1.3的动态路由。类似于它所描述的这里和这里。这些例子说明了这样的情况:
$routeProvider.when('/:group/:pagename', {
controller: 'RouteCtrl',
templateUrl: 'uirouter.html'
})
然后控制器将通过$routeParams访问组和分页名。起作用了
我试图使这个路由更加动态,并且还可以动态地选择模板和控制器:
$routeProvider.when('/:group/:pagename', {
controller: $routeParams.group + 'Ctrl',
templateUrl: $routeParams.pagename + '.html'
})
当我在when
上放置一个断点时,我可以看到$get属性具有一个函数,该函数将$routeParams作为参数之一。但我想不出如何找回它的价值。
该项目处于非常早期的阶段--我可以使用ui路由器或ng路由器,如果其中任何一个具有此功能的话。
发布于 2015-06-29 22:43:31
对于动态templateUrl部分,您可以尝试:
$routeProvider.when('/:group/:pagename', {
controller: "SomeCtrl",
templateUrl: function(params){return params.pagename + '.html';}
})
但是,不确定是否可以在控制器上完成同样的操作。
发布于 2015-06-29 22:47:14
您可以声明一个将返回templateUrl
字符串的函数,而不是直接值,即:
$routeProvider.when('/:group/:pagename', {
controller: $routeParams.group + 'Ctrl',
templateUrl: function (routeParams) {
return routeParams.pagename + '.html';
}
});
我想controller
可能也是如此,但是您必须测试出其中一个,因为我从未将它用于控制器。
尽管如此,如果这里有这么多动态逻辑,也许您可以将这些视图封装为不同的指令,而不是将其作为不同的控制器来处理,而ng-if
特定的指令取决于将设置在一个包装控制器中的$routeParams
?
https://stackoverflow.com/questions/31126634
复制相似问题