UI-маршрутизатор динамически определяет «следующее» состояние во время выполнения

0

Я хочу использовать ui-router для сбора навигации по серии страниц в динамически определенной последовательности. Каждый шаблон является независимым модулем и может быть переупорядочен или пропущен, поэтому я не хочу жестко кодировать атрибут ui-sref для "следующей" кнопки для каждого шаблона.

Для чего я стремлюсь

  • Пользователь нажимает следующую кнопку
  • Контроллер маршрутизации просматривает состояние, в котором этот конкретный пользователь должен перейти к следующему (меняется для каждого пользователя) и вытаскивает соответствующие параметры
  • Контроллер маршрутизации вызывает $ state.go('nextstate', params)

Как я могу разместить общую страницу на странице, например, сказать

<a ui-sref="next">

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

У меня есть сложные параметры, которые я хочу передать в состояние, которое нельзя поместить на URL.

Теги:
angular-ui-router

1 ответ

0
Лучший ответ

После сна я понял, что в моем случае проще было использовать ng-click (особенно, поскольку я передаю параметры, которые нелегко кодировать):

<a href="" ng-click="next()">

<script>
   function next() {
       $state.go(theNextState, { arg1: { subArg: nestedObject } } );
   }
</script>

Вот рабочий пример: http://plnkr.co/edit/CnNv08Cfb2dpRsnoOxY8

Я выложу этот код в директиву, чтобы разные модули просто нужно было делать

<next-button>

в их шаблонах.

В некоторых случаях это может вызвать проблемы с доступностью, поскольку ng-click не запускается при навигации по клавиатуре, но в моем контексте это не проблема (поскольку я буду использовать <button>, для которой он срабатывает на клавиатуре). Для других, заинтересованных в том, чтобы сделать это решение доступным, здесь обсуждается:

http://jakub-g.github.io/accessibility/onclick/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню