在运行时配置angularjs路由

时间:2013-06-28 18:52:52

标签: angularjs dependency-injection routing routes

我的路由设置如下:

angular.module('MyApp', ['MyApp.controllers']).
  config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/foo', {
        templateUrl: '/fooTemplate',
        controller: 'FooCtrl'
      });
    }]
  );

我想要做的是在运行时为'/ foo'添加前缀,因此根据我的应用程序的配置方式,路径可能是/ foo,可能是/ some / arbitrary / path / foo等等

理想情况下,我可以写一些类似的东西:

...
$routeProvider.when(prefix + '/foo', {
    templateUrl: '/fooTemplate',
...

但无法弄清楚如何将这个前缀注入我的配置方法。

1 个答案:

答案 0 :(得分:3)

应该是这样的:

.when('/:prefix/foo', {templateUrl: 'details.html', controller: DetailsCtrl})

然后prefix将通过$routeParams在控制器中提供。如果您希望它处理没有前缀的选项foo,只需将其放在路由中并确保它在上面的示例之前。

.when('/foo', {templateUrl: 'details.html', controller: DetailsCtrl})
.when('/:prefix/foo', {templateUrl: 'details.html', controller: DetailsCtrl})
相关问题