3

したがって、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',
    })

この質問は、サイトに複数の言語があり、URL の複数の翻訳が必要な場合に尋ねられます。

別の解決策は、サイトがたとえば .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',
})

しかし、意味的には、構成オプションを設定後に実行ブロックに設定したままにするのが好きなので、これは最善の解決策ではないようです。また、config にファクトリを注入することもできません (プロバイダーのみ、間違っているかもしれません)。

4

1 に答える 1

0

ルートの最初の URL セグメントとして言語を配置します。

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

$routeProviderが、URL セグメントを分離できるこの機能を提供するのであれば、それは本当に素晴らしいことです。:lng私は各ルートにかなり入れているわけではありません。

于 2015-06-13T14:03:49.563 に答える