Javascript 根据语言重新路由到不同的子视图
我用angular.js编写了一个应用程序,并尝试根据它们登陆的页面加载不同的子视图。具体来说,当用户登陆英文版本时,将加载部分视图,当用户登陆法文版本时,将加载不同的视图。但是,无论我在代码中没有看到什么,都会使子视图始终位于ELSE(或“/”)路径上。这是我的appRoutes.js文件中的当前代码Javascript 根据语言重新路由到不同的子视图,javascript,angularjs,module,routes,Javascript,Angularjs,Module,Routes,我用angular.js编写了一个应用程序,并尝试根据它们登陆的页面加载不同的子视图。具体来说,当用户登陆英文版本时,将加载部分视图,当用户登陆法文版本时,将加载不同的视图。但是,无论我在代码中没有看到什么,都会使子视图始终位于ELSE(或“/”)路径上。这是我的appRoutes.js文件中的当前代码 angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routePro
angular.module('appRoutes', []).config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
var homeLang = document.documentElement.getAttribute('lang');
var english = 'en';
var homeView = function (homeLang) {
if (homeLang === english) {
homeView = '/';
return homeView;
} else {
homeView = '/accueil';
return homeView;
}
};
$routeProvider
// client routes
.when('/', {
templateUrl: 'views/home.html',
controller: 'MainController'
})
.when('/web', {
templateUrl: 'views/web.html',
controller: 'MainController'
})
.when('/design', {
templateUrl: 'views/design.html',
controller: 'MainController'
})
.when('/hosting', {
templateUrl: 'views/hosting.html',
controller: 'MainController'
})
.when('/contact', {
templateUrl: 'views/contact.html',
controller: 'MainController'
})
.when('/accueil', {
templateUrl: 'views/accueil.html',
controller: 'MainController'
})
.when('/sites', {
templateUrl: 'views/sites.html',
controller: 'MainController'
})
.when('/services', {
templateUrl: 'views/services.html',
controller: 'MainController'
})
.when('/hebergement', {
templateUrl: 'views/hebergement.html',
controller: 'MainController'
})
.when('/contactez', {
templateUrl: 'views/contactez.html',
controller: 'MainController'
})
.otherwise({ redirectTo: homeView });
$locationProvider.html5Mode(true);
}]);
下面是加载不同视图的HTML
<body ng-app="myApp">
<div class="navbar-wrapper">
<div class="container">
<div role="navigation" class="navbar navbar-inverse navbar-static-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" data-toggle="collapse" data-target=".navbar-collapse" class="navbar-toggle collapsed"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
</div>
<div class="navbar-collapse collapse">
<div class="nav navbar-nav">
<li><a href="/accueil">Accueil</a></li>
<li><a href="/sites">Sites & Apps</a></li>
<li><a href="/services">Design</a></li>
<li><a href="/hebergement">Hébergement</a></li>
<li><a href="/contactez">Contact</a></li>
</div>
</div></div></div></div></div>
<section class="content">
<div ng-view></div></section></body>
切换导航
在您的视图中,您可以根据语言加载不同的模板,而无需更改路由。
例如,在routed视图中
然后,您还可以在每个跨度之前添加一个ng if来检查语言值。我实际上回到了代码中,使用了ui路由器,并使用构建块(多个视图)创建了状态,它解决了我所有的问题!!:) 抱歉,代码被删除了-我写了,我通常会这样做,但在我的HTML文件中,我有ng视图加载其他页面后。我上面代码中的一些路由属于法语版本,另一些属于英语版本。加载时是否可以在ng视图中设置默认视图?然后,当我们点击导航时,它会加载不同的视图。我在上面添加了HTML。当你第一次登录时,我猜你是在“/”上,这意味着你的默认路由。当(“/”,{templateUrl:'views/home.HTML',controller:'MainController})是的,所以我需要默认“/”当菜单是英文版本时,但当菜单是法文版本时,我需要默认为“/acueil”…这就是我用我的有条件的。条件似乎有效,但是homeLang的值似乎不是在我的appRoute.js文件中获取的,因此总是默认为“/acueil”。只是为了可视化我的结构:language selection(常规html)-to-angular应用程序,其中菜单使用的是选择语言,但我认为子视图的默认设置不正确(除非我是法国人)。请分享你的解决方案。我也需要它。我想不出来