0

我有一个可以在两个上下文中运行的应用程序——1)全局和 2)客户端

在全局上下文中,url 类似于 mydomain.com/#login、mydomain.com/#register,但在客户端上下文中,url 类似于 mydomain.com/#/ClientKey/login 和 mydomain.com/#/ClientKey/登记。在这两种情况下,我都想打开完全相同的模板,即 login.html 和 register.html。实现此目的的一种方法是复制 routeProvider.when 两种情况,如下所示

 $routeProvider.when('/:ClientKey/_login', { 
                templateUrl: 'views/login.html',
                controller: 'LoginCtrl', 
            })

 $routeProvider.when('/_login', { 
                templateUrl: 'views/login.html',
                controller: 'LoginCtrl', 
            })

我的问题是,有没有办法在单个 routeProvider.when 中做到这一点,而不是复制两次,差别很小。这对我的应用程序很重要,因为有几个这样的链接,如登录、注册、editProfile、changePassword 等。

4

1 回答 1

1

像这样?

var routes = {
    '/_login' : { templateUrl: 'views/login.html', controller:'LoginCtrl' }
    ...
}

for (var k in routes) {
    $routeProvider
        .when(k, routes[k])
        .when('/:clientId' + k, routes[k]);
}

编辑:

您实际上可以使用 进行可选组?,因此以下可能有效。

$routeProvider.when(':clientId?/_login', { ... });
于 2014-03-21T06:26:39.563 回答