Angularjs routeprovider多个路由导致相同的视图

时间:2014-11-11 22:22:04

标签: angularjs routing internationalization ngroute

因此,angularjs $ routeProvider的工作流程如下:

    $routeProvider
    .when('/main1', {
        templateUrl: 'view1.html',
    })
    .when('/main2', {
        templateUrl: 'view2.html',
    })

我的问题是,有没有办法简化以下代码。如果何时('/ main1')和何时('/ main2')指向同一模板。所以,

    $routeProvider
    .when('/main1', {
        templateUrl: 'view1.html',
    })
    .when('/main2', {
        templateUrl: 'view1.html',
    })

问题是因为如果我们在网站上有多种语言,并且我们希望有多个网址的翻译。

另一种解决方案是识别网站是否正在使用.com或.de,从而调整为正确的/ main1或/ main2转换。例如,

var url = window.location.href;
var main;
if (url.match(/.de/) !== null){
    main = "/main1";
}else{
   main = "/main2";
}

$routeProvider
.when(main, {
    templateUrl: 'view1.html',
})

但从语义上讲,这似乎不是最好的解决方案,因为我喜欢在配置后保持运行块中的配置选项。我们也不能注入工厂(只有供应商,我可能会弄错)才能配置。

1 个答案:

答案 0 :(得分:0)

我会把语言作为路线中的第一个网址段。

$routeProvider.when('/:lng/main', {
    templateUrl: 'main.html',
    controller: function($routeParams){
        var lng = $routeParams.lng;
    }    
})

如果$routeProvider提供此功能,可以隔离网址段,那将是非常好的。我在每条路线上都很:lng