Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多语言应用程序中的Angular JS路由不工作_Javascript_Angularjs_Angularjs Routing - Fatal编程技术网

Javascript 多语言应用程序中的Angular JS路由不工作

Javascript 多语言应用程序中的Angular JS路由不工作,javascript,angularjs,angularjs-routing,Javascript,Angularjs,Angularjs Routing,我正在尝试实现一个多语言应用程序。 我需要通过在控制器名称之前的URL中添加两个字母的iso参数来访问请求的语言。 例如: 我现在正在使用基本状态提供程序进行路由。你知道如何更改此项以使此功能正常工作吗 提前谢谢大家, 更新 对于任何有相同问题的人,我的解决方案是: 将每个状态更改为以下状态 .state('signup', { url: '/:lang/signup', templateUrl: baseTemplateUrl +

我正在尝试实现一个多语言应用程序。 我需要通过在控制器名称之前的URL中添加两个字母的iso参数来访问请求的语言。 例如:

我现在正在使用基本状态提供程序进行路由。你知道如何更改此项以使此功能正常工作吗

提前谢谢大家,


更新


对于任何有相同问题的人,我的解决方案是:

将每个状态更改为以下状态

 .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;