2014-10-21 2 views
4

Я использую Iron Router в довольно сложном приложении и имею некоторые маршруты, которые перенаправляют пользователей на другие внутренние маршруты (например, "/" всегда перенаправляет на "/dashboard").Железный маршрутизатор перенаправляет без функции функции возврата назад

Мы имеем дело с этим, просто добавив, например, Router.go("/dashboard"), или (смутно, но в равной степени недействительным) this.redirect("/dashboard") до первого маршрута action крюк.

Проблема заключается в том, что это нарушает обратную кнопку браузера: вы мгновенно возвращаетесь на маршрут с перенаправлением, который затем перенаправляет вас обратно туда, где вы были.

  1. Каков наилучший способ обойти это?
  2. Есть ли веские причины, по которым мы не должны просто заменять, а не нажимать history.state по умолчанию для this.redirect()?

ответ

1

Для тех, кто все еще интересно, исправление этой проблемы планируется в следующем выпуске Железного маршрутизатора: https://github.com/EventedMind/iron-router/issues/764

Там вы будете иметь возможность использовать this.redirect() внутри вашего маршрута крючками, который заменит состояние по умолчанию

5

У нас была такая же проблема в нашем приложении. В версии 0.9.4 (и, возможно, в некоторых более ранних версиях) вы можете добавить {replaceState: true} в качестве последнего аргумента в Router.go. Для получения дополнительной информации см. this issue. Обратите внимание, что на момент написания этой статьи похоже, что это не было интегрировано в код 1.0.x.

+0

Я поддержал вас, но это не работает для меня, когда вы выполняете функцию маршрута. – ephemer

+2

Я считаю, что это должно сработать. Похоже, вам нужен второй аргумент. 'Router.go ('/ dashboard', {}, {replaceState: true});' – phocks

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