2013-11-15 1 views
1

У меня есть параметр URL, который я хочу существовать во всех состояниях. Параметр «asUser», и он позволяет администраторам просматривать приложение в качестве другого пользователя. Я пробовал:Как вы используете унаследованные параметры в угловом ui-router?

$stateProvider 
    .state("root", { 
    params: ['asUser'] 
    }) 
    .state("root.login", { 
    url: "/login", 
    templateUrl: "/static/partials/login.html",   
    controller: 'LoginCtrl' 
    }) 
    ... 

Но когда я иду в URL /login?asUser=123, я получаю эту ошибку в консоли:

Failed to instantiate module myApp due to: 
Missing required parameter 'asUser' in state 'root.login' 

Есть в любом случае иметь глобальный параметр, как это с ui.router, без стоит упомянуть об этом в каждом штате и передавать его повсюду?

+0

Какую версию ui-router вы используете? Я никогда не видел параметры состояния, определенные таким образом, и они не делают этого так, как в документах – NicolasMoise

+1

oh ok nvm, я получаю то, что вы пытаетесь сделать. Это всего лишь предположение, но я пытаюсь добавить параметр к URL-адресу «root.login» i.e/login /: asUser – NicolasMoise

+0

Спасибо, это поставило меня на правильный путь. –

ответ

2

Я хотел бы сделать:

.state("root", { 
    url: '/?asUser' 
}) 

Вы все равно придется обрабатывать наследование параметров по своему усмотрению, но это должно, по крайней мере сделать это, что параметр действует во всех штатах.

+0

Спасибо, это работает. Я не уверен, почему это должно вести себя иначе, чем 'params: ['asUser']', но ваш пример позволяет мне не повторять параметр во всех URL-адресах поддиапазона. Кроме того, я добавил «abstract: true» в это корневое состояние. –

+0

«Я не уверен, почему это должно вести себя иначе, чем' params: ['asUser'] '" - потому что вы не читали документацию: https://github.com/angular-ui/ui-router/ wiki/Quick-Reference # params –

+2

Да, я это сделал. :) Где в этом сообщении о 'params' говорится, что поведение отличается от параметров, указанных в' url'? Он просто говорит, что вы можете использовать его в качестве альтернативы, когда не укажете «url». –

Смежные вопросы