因此,使用 angularjs $routeProvider 的工作流程如下,
$routeProvider
.when('/main1', {
templateUrl: 'view1.html',
})
.when('/main2', {
templateUrl: 'view2.html',
})
我的问题是,有没有办法简化以下代码。如果when('/main1')和when('/main2')指向同一个模板。所以,
$routeProvider
.when('/main1', {
templateUrl: 'view1.html',
})
.when('/main2', {
templateUrl: 'view1.html',
})
提出这个问题是因为如果我们的网站有多种语言,并且我们希望网址有多种翻译。
另一个解决方案是识别网站是否使用 .com 或 .de 等,从而调整到正确的/main1 或/main2 翻译。例如,
var url = window.location.href;
var main;
if (url.match(/.de/) !== null){
main = "/main1";
}else{
main = "/main2";
}
$routeProvider
.when(main, {
templateUrl: 'view1.html',
})
但从语义上讲,这似乎不是最好的解决方案,因为我喜欢在配置之后在运行 block 中保留配置选项设置。我们也无法将工厂(仅限提供者,但我可能弄错了)注入(inject)到配置中。
最佳答案
我会选择将语言作为路由中的第一个 url 段。
$routeProvider.when('/:lng/main', {
templateUrl: 'main.html',
controller: function($routeParams){
var lng = $routeParams.lng;
}
})
如果 $routeProvider
能够提供可以隔离 url 段的功能,那就太好了。我在每条 route 放置 :lng
不太漂亮。
关于Angularjs RouteProvider 多个路由导致相同的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26875715/