1

次のように定義されたルートがあります

$routeProvider.when('/:culture/:gameKey/:gameId/closed', { templateUrl: '/templates/tradingclosed', controller: TradingClosedCtrl });

何らかの方法でテンプレートをリクエストするときに「文化」パラメーターを含めたいので、翻訳されたテンプレートを提供できます。

これは可能ですか?

4

2 に答える 2

1

私がこれを正しく読んでいるならculture、URL ルートのパラメーターを何らかの方法で使用して、テンプレートを取得する場所を決定したいでしょう。

より良い方法があるかもしれませんが、この投稿では、ビューを動的にロードするために$routeParams集中型コントローラーの内部を取得する方法について説明します。ng-include

これに似たもの:

angular.module('myApp', []).
    config(function ($routeProvider) {
        $routeProvider.when('/:culture/:gameKey/:gameId/closed', {
            templateUrl: '/templates/nav/urlRouter.html',
            controller: 'RouteController'
        });
    });

function RouteController($scope, $routeParams) {
        $scope.templateUrl = 'templates/tradingclosed/' + $routeParams.culture + '_template.html';
    }

これをurlRouter.htmlとして:

<div ng-include src="templateUrl"></div>

$routeParamsng-controller を使用してビューにロードするコントローラーを定義し、追加のルート パラメーターにアクセスできます。

<div ng-controller="TradingClosedCtrl">
</div>
于 2012-08-23T16:16:07.697 に答える
0

@Gloopyが提案したような解決策の実用的なPlkrの例で同様の質問を投稿しました。

ng-include なしでそれを実装できない理由は、値を注入できない「構成」ブロックでルーティングが行われるためです (これらのブロックについては、モジュールのドキュメントのセクションモジュールの読み込みと依存関係で読むことができます)。

新しいスコープを導入したくない場合は、ng-include を削除したバージョンの ng-include ディレクティブに置き換えることができます。これは、ng-include とまったく同じですが、新しいスコープを作成しません: rawInclude ディレクティブのソース

そのソリューションがユースケースを満たすことを願っています。

于 2012-12-27T11:54:58.927 に答える