Javascript 多语言应用程序中的Angular JS路由不工作
我正在尝试实现一个多语言应用程序。 我需要通过在控制器名称之前的URL中添加两个字母的iso参数来访问请求的语言。 例如: 我现在正在使用基本状态提供程序进行路由。你知道如何更改此项以使此功能正常工作吗 提前谢谢大家,Javascript 多语言应用程序中的Angular JS路由不工作,javascript,angularjs,angularjs-routing,Javascript,Angularjs,Angularjs Routing,我正在尝试实现一个多语言应用程序。 我需要通过在控制器名称之前的URL中添加两个字母的iso参数来访问请求的语言。 例如: 我现在正在使用基本状态提供程序进行路由。你知道如何更改此项以使此功能正常工作吗 提前谢谢大家, 更新 对于任何有相同问题的人,我的解决方案是: 将每个状态更改为以下状态 .state('signup', { url: '/:lang/signup', templateUrl: baseTemplateUrl +
更新
对于任何有相同问题的人,我的解决方案是: 将每个状态更改为以下状态
.state('signup', {
url: '/:lang/signup',
templateUrl: baseTemplateUrl + "signup.html",
controller: 'signupController',
resolve: {
lang: ['$stateParams', function ($stateParams) {
document.cookie = "lang=" + $stateParams.lang;
}]
}
});
我将$stateParams lang的值保存到一个cookie中,这样您就可以通过app.run()访问它,并将其传递给我的translationService,因为$stateParams尚未初始化
这样,您的应用程序将仅在html5mode=false时工作。这意味着您在URL({lang}/{controllername})中总是会看到一个丑陋的标签,为了解决这个问题,我将$locationProvider配置为:
$locationProvider.html5Mode(true).hashPrefix('!');
并通过在index.html文件的标记内插入以下行来设置站点的基本url:
<base href="/">
谢谢将语言代码添加为url参数
$stateProvider
.state('home', {
url: '/:langcode/home',
templateUrl: baseTemplateUrl + "home.html",
controller: 'homeController'
});
在控制器中,使用$stateParams
$scope.language = $stateParams.langcode;
重复检查我就是这么做的,结果页面中的HTML无效-重复视图。为了解决这个问题,我禁用了HTML5模式。但是,我在视图中看不到任何内容,我在index.HTML文件更新中使用了:调试时它不会到达控制器。
$scope.language = $stateParams.langcode;