选项 url 路径 UI-路由器
Option url path UI-Router
在我的 angular 应用程序中,我大量使用 UI-Router 的嵌套状态。
我正在尝试创建一个父状态,它根据具有可选语言环境路径的 URL 确定应用程序的语言环境。
- 西班牙语
www.website.com/es/search
- 英语
www.website.com/search
西班牙语需要 '/es'
,但缺少参数暗示英语,我宁愿没有 '/en'
.
我希望此状态的任何子状态都继承该语言环境值。
$stateProvider
.state('localization', {
abstract: true,
url: '/:locale?',
params: {
locale: { value: 'en' }
}
})
.state('search', {
url: '/search',
parent: 'localization'
});
我希望能够在任何子状态中使用 $stateParams.locale
。
有几乎相同的问答:Angular js - route-ui add default parmeter or another here
解决方案是像这样创建根状态:
.state('localization', {
url: '/{locale:(?:en|es|cs)}',
abstract: true,
template: '<div ui-view=""></div>',
params: {locale : { squash : true, value: 'en' }}
})
然后任何子状态都可以将其用作父状态:
.state('home', {
parent: 'localization', // parent will do the magic
url: "/",
...
})
.state('activity', {
parent: 'localization',
...
Check it here,plunker
也完全正常工作
在我的 angular 应用程序中,我大量使用 UI-Router 的嵌套状态。
我正在尝试创建一个父状态,它根据具有可选语言环境路径的 URL 确定应用程序的语言环境。
- 西班牙语
www.website.com/es/search
- 英语
www.website.com/search
西班牙语需要 '/es'
,但缺少参数暗示英语,我宁愿没有 '/en'
.
我希望此状态的任何子状态都继承该语言环境值。
$stateProvider
.state('localization', {
abstract: true,
url: '/:locale?',
params: {
locale: { value: 'en' }
}
})
.state('search', {
url: '/search',
parent: 'localization'
});
我希望能够在任何子状态中使用 $stateParams.locale
。
有几乎相同的问答:Angular js - route-ui add default parmeter or another here
解决方案是像这样创建根状态:
.state('localization', {
url: '/{locale:(?:en|es|cs)}',
abstract: true,
template: '<div ui-view=""></div>',
params: {locale : { squash : true, value: 'en' }}
})
然后任何子状态都可以将其用作父状态:
.state('home', {
parent: 'localization', // parent will do the magic
url: "/",
...
})
.state('activity', {
parent: 'localization',
...
Check it here,plunker
也完全正常工作