Angularjs在不同的URL上使用相同的模板和控制器

时间:2014-03-21 06:18:52

标签: route-provider

我有一个可以遇到两个上下文的应用程序 - 1)全局和2)客户端

在全球范围内,网址就像这样mydomain.com/#login,mydomain.com/#register但在客户端上下文时,网址就像这样: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中进行,而不是只用很小的差异复制它两次。这对我的应用程序很重要,因为有几个这样的链接,如login,register,editProfile,changePassword等。

1 个答案:

答案 0 :(得分: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', { ... });