Angular route

时间:2015-06-29 22:29:04

标签: javascript angularjs angular-ui-router angularjs-routing

我正在尝试在Angular 1.3中进行动态路由。类似于其描述的herehere。这些例子表明这样的事情:

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

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

我正在努力使这个路由更加动态,并且还要动态选择模板和控制器:

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

当我在when上放置一个断点时,我可以看到有一个带有$ routeParams作为参数之一的函数的$ get属性。但我无法弄清楚如何检索其价值。

该项目处于初期阶段 - 如果其中任何一个具有此功能,我可以使用ui-router或ng-router。

2 个答案:

答案 0 :(得分:2)

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

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

不确定控制器是否也可以这样做。

答案 1 :(得分:2)

您可以声明一个返回templateUrl字符串的函数,而不是直接值,即:

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

我想controller可能也是如此,但你必须测试一下,因为我从未将它用于控制器。

话虽这么说,如果你在这个地方有如此多的动态逻辑,也许不是将它视为不同的控制器,你可以将这些视图封装为不同的指令和ng-if某些指令取决于{{1}将在一个包装控制器中设置?