Angularjs RouteProvider 多个路由导致相同的 View

标签 angularjs routes internationalization ngroute

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

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

我的问题是,有没有办法简化以下代码。如果when('/main1')和when('/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',
})

但从语义上讲,这似乎不是最好的解决方案,因为我喜欢在配置之后在运行 block 中保留配置选项设置。我们也无法将工厂(仅限提供者,但我可能弄错了)注入(inject)到配置中。

最佳答案

我会选择将语言作为路由中的第一个 url 段。

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

如果 $routeProvider 能够提供可以隔离 url 段的功能,那就太好了。我在每条 route 放置 :lng 不太漂亮。

关于Angularjs RouteProvider 多个路由导致相同的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875715/

相关文章:

javascript - Angular : How do optimize the below if/else statement in angularjs?

html - 如何让 Express 路由与具有 HTML5 样式 URL 的 Angular 路由一起工作?

ruby-on-rails - 在 rspec 文件中,我得到 => Error: ActionController::RoutingError: No route matches xxxxxxx despite valid routing

java - 有什么方法可以知道 Locale 上的国家/地区默认使用的语言吗?

javascript - .po 文件和 gettext VS JSON 和自定义 i18n 库?

ios - swift 改变语言

java - JAX-RS( Jersey )-> 通过 REST 的 Angular.js

javascript - AngularJS : Change URL, 但不是浏览器后退和前进按钮的 Controller 或模板加载

php - 具有可变参数的 Laravel 5.2 命名路由用法

Azure SWA : redirect to modified version of requested route?