2012-08-23 26 views
1

我已路由定義爲如何在AngularJS中加載語言特定的模板?

$ routeProvider.when( '/:文化/:gameKey /:遊戲ID /關閉',{templateUrl: '/模板/ tradingclosed',控制器:TradingClosedCtrl});

我想在角色包含「文化」參數時以某種方式請求模板,所以我可以提供翻譯的模板。

這可能嗎?

回答

1

如果我正確地閱讀這個,你想以某種方式使用url路由中的culture參數來確定檢索模板的位置。

可能有更好的方法,但this post描述檢索集中控制器內的$routeParamsng-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> 

你可以定義你想用NG-控制器在你的意見來加載控制器訪問$routeParams以獲取其他路徑參數:

<div ng-controller="TradingClosedCtrl"> 
</div> 
+0

謝謝:)一個恥辱它不可能沒有包括雖然(節省資源負載和可能的一些性能)。 – Micael

+0

我選擇了不接受答案,因爲它在使用包含功能時似乎會對範圍造成干擾,所以我仍在尋找一種很好的方法來實現此目的。 – Micael

0

我已經發布similar question與工作Plnkr example像@Gloopy建議的解決方案。

如果沒有ng-include,你無法實現這個功能的原因是路由在'configuration'塊中完成,在這裏你不能注入任何值(你可以在Modules documentation的章節中閱讀關於這些塊的內容。 &依賴

如果你想不引進新的範圍,可以更換NG-包括與我的剝離版本NG-include指令,即做絕對相同的是NG-包括做,但不創建新的範圍:source of rawInclude directive

希望解決方案能夠滿足您的使用案例