次のように定義されたルートがあります
$routeProvider.when('/:culture/:gameKey/:gameId/closed', { templateUrl: '/templates/tradingclosed', controller: TradingClosedCtrl });
何らかの方法でテンプレートをリクエストするときに「文化」パラメーターを含めたいので、翻訳されたテンプレートを提供できます。
これは可能ですか?
次のように定義されたルートがあります
$routeProvider.when('/:culture/:gameKey/:gameId/closed', { templateUrl: '/templates/tradingclosed', controller: TradingClosedCtrl });
何らかの方法でテンプレートをリクエストするときに「文化」パラメーターを含めたいので、翻訳されたテンプレートを提供できます。
これは可能ですか?
私がこれを正しく読んでいるなら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>
$routeParams
ng-controller を使用してビューにロードするコントローラーを定義し、追加のルート パラメーターにアクセスできます。
<div ng-controller="TradingClosedCtrl">
</div>
@Gloopyが提案したような解決策の実用的なPlkrの例で同様の質問を投稿しました。
ng-include なしでそれを実装できない理由は、値を注入できない「構成」ブロックでルーティングが行われるためです (これらのブロックについては、モジュールのドキュメントのセクションモジュールの読み込みと依存関係で読むことができます)。
新しいスコープを導入したくない場合は、ng-include を削除したバージョンの ng-include ディレクティブに置き換えることができます。これは、ng-include とまったく同じですが、新しいスコープを作成しません: rawInclude ディレクティブのソース
そのソリューションがユースケースを満たすことを願っています。