0

我想在Angular 1.3中有动态路由。类似于它所描述的herehere。这些示例提示如下:Angular路由的动态页面

$routeProvider.when('/:group/:pagename', { 
    controller: 'RouteCtrl', 
    templateUrl: 'uirouter.html' 
}) 

然后控制器将通过$ routeParams访问组和页面名称。该工程

我试图让这个路由多了几分活力和具有模板和控制器来选择动态,以及:

$routeProvider.when('/:group/:pagename', { 
    controller: $routeParams.group + 'Ctrl', 
    templateUrl: $routeParams.pagename + '.html' 
}) 

当我把一个断点when我可以看到,有$获取具有$ routeParams作为参数之一的函数的属性。但我无法弄清楚如何检索它的值。

该项目是在很早的阶段 - 我可以与ui路由器或ng路由器,如果他们有任何这种功能。

回答

2

对于动态templateUrl部分你可以尝试:

$routeProvider.when('/:group/:pagename', { 
    controller: "SomeCtrl", 
    templateUrl: function(params){return params.pagename + '.html';} 
}) 

不知道是否相同可以用控制器不过来完成。

2

取而代之的是直接价值的,你可以声明一个函数会返回一个templateUrl字符串,即:

$routeProvider.when('/:group/:pagename', { 
    controller: $routeParams.group + 'Ctrl', 
    templateUrl: function (routeParams) { 
     return routeParams.pagename + '.html'; 
    } 
}); 

我猜想的一样可以为controller是真实的,但你必须测试一出来,如我从来没有用它来控制器。这就是说,如果你在这个地方有这么多的动态逻辑,也许不是把它当作不同的控制器来对待,你可以将这些视图封装为不同的指令,并且根据$routeParams将这些视图封装为不同的指令,这些指令将被设置为一个包装控制器?

+0

TemplateUrl是现货(我很尴尬,我错过了它......但我怎么到控制器中的'$ routeParams'?我试图注入,并且它给了我“未知提供者” – Felix