Angular js – route-ui添加默认参数

在我的应用程序中,我使用angular度UI路由器。

我有本地人(英语和希伯来语)我的基础语言是英语。

这就是为什么我想如果语言是英文不添加参数的url

例如:

  • 主页英语 – > http://example.com/
  • Home希伯来语 – > http://example.com/he/

  • 关于我们English – > http://example.com/about

  • 关于我们希伯来语 – > http://example.com/he/about

这可能吗 ?

这是我现在的代码

 $stateProvider .state('/', { url: "/", templateUrl: "Assets/app/templates/home.html", controller: 'homeController' }) .state('activity', { url: "/activity", templateUrl: "Assets/app/templates/gallery.html", controller: 'galleryController' }) .state('page', { url: '/:pagename', templateUrl: "Assets/app/templates/page.html", controller: 'pageController' }); 

有一个工作的笨蛋

与往常一样, UI-Router内置的function是可行的。 首先,我们将介绍称为“root”的超级父状态。 它会定义参数lang

 .state('root', { url: '/{lang:(?:en|he|cs)}', abstract: true, template: '<div ui-view=""></div>', params: {lang : { squash : true, value: 'en' }} }) 

有趣的事情提到:该url使用正则expression式来减less匹配lang字(在我们的例子中,英文,希伯来文和捷克文)的数量

 url: '/{lang:(?:en|he|cs)}', 

阅读更多例如这里 。

另外,我们从一个名为params : {}的设置中获利params : {} 。 它表示,默认值是'en' ,更重要的是它应该被压扁,如果与'en'参数值匹配,则跳过:

 params: {lang : { squash : true, value: 'en' }} 

阅读更多,例如在这里或这里

所以,这是我们的父级,根状态,我们只需要将状态定义parent : 'root'的状态应用于所有状态parent : 'root'

 .state('home', { parent: 'root', // parent will do the magic url: "/", templateUrl: "Assets/app/templates/home.html", controller: 'homeController' }) .state('activity', { parent: 'root', // parent magic url: "/activity", templateUrl: "Assets/app/templates/gallery.html", controller: 'galleryController' }) .state('page', { parent: 'root', // magic url: '/page/:pagename', templateUrl: "Assets/app/templates/page.html", controller: 'pageController' }); 

现在这些链接将工作:

ui-sref英语:

 <a ui-sref="home({lang: 'en'})">home({lang: 'en'})</a> <a ui-sref="activity({lang: 'en'})">activity({lang: 'en'})</a> <a ui-sref="page({pagename:'one', lang: 'en'})">page({pagename:'one', lang: 'en'})</a> 

ui-sref希伯来语:

 <a ui-sref="home({lang: 'he'})">home({lang: 'he'})</a> <a ui-sref="activity({lang: 'he'})">activity({lang: 'he'})</a> <a ui-sref="page({pagename:'two', lang: 'he'})">page({pagename:'two'})</a> 

href英文:

 <a href="#/">#/</a> <a href="#/activity">#/activity</a> <a href="#/page/three">#/page/three</a> 

href希伯来语:

 <a href="#/he/">#/he/</a> <a href="#/he/activity">#/he/activity</a> <a href="#/he/page/three">#/he/page/three</a> 

在这里检查它的行动