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>
在这里检查它的行动
- 如何通过$ http将angular-ui的typeahead与服务器绑定以进行服务器端优化?
- AngularJS。 在调用angular-ui模式时清除$ timeout
- ui-bootstrap-tpls.min.js和ui-bootstrap.min.js有什么区别?
- angularjs文本区字符计数器
- 在自定义事件上启用angular-ui工具提示
- 如何使用HTML内容创buildAngularJS UI引导popup窗口?
- Angular引导dateselect器date格式不会格式化ng模型值
- 在Angular UI-Bootstrap中,“解除”模态和“closures”模态有什么区别?
- 如何使用angular度检测浏览器?