选项 url 路径 UI-路由器

Option url path UI-Router

在我的 angular 应用程序中,我大量使用 UI-Router 的嵌套状态。

我正在尝试创建一个父状态,它根据具有可选语言环境路径的 URL 确定应用程序的语言环境。

西班牙语需要 '/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

也完全正常工作