我有一条路线定义为
$routeProvider.when('/:culture/:gameKey/:gameId/closed', { templateUrl: '/templates/tradingclosed', 控制器: TradingClosedCtrl });
我希望在以某种方式请求模板时包含“文化”参数,这样我就可以提供翻译后的模板。
这可能吗?
我有一条路线定义为
$routeProvider.when('/:culture/:gameKey/:gameId/closed', { templateUrl: '/templates/tradingclosed', 控制器: 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>
您可以使用 ng-controller 定义要在视图中加载的控制器并访问$routeParams
附加路由参数:
<div ng-controller="TradingClosedCtrl">
</div>
我已经用@Gloopy 建议的解决方案的工作Plnkr 示例发布了类似的问题。
没有 ng-include 无法实现的原因是路由是在“配置”块中完成的,您不能在其中注入任何值(您可以在模块文档中阅读这些块,模块加载和依赖项部分
如果你不想引入新的范围,你可以用我的 ng-include 指令的剥离版本替换 ng-include,它与 ng-include 完全一样,但不要创建新的范围:rawInclude 指令的来源
希望该解决方案能够满足您的用例。