2013-03-07 1 views
1

Я пытаюсь найти хороший способ временно сохранить ссылку на текущий маршрут, чтобы потом перейти к нему.Ember.JS - сохранить маршрут, затем перейти к нему позже

Я знаю, что внутри маршрута я могу сделать:

r = @get("routeName") 

, а затем позже:

@transitionTo (r) 

Но это не включает в себя динамические сегменты. Нужно ли так легко сделать это?

ответ

2

Как насчет:

completeRoute = @get("routeName") 
args = [completeRoute] 
tempRoute = '' 
completeRoute.split('.').forEach (route)=> 
    tempRoute += route 
    args.push(@modelFor(tempRoute)) if @modelFor(tempRoute) 
    tempRoute += '.' 

, а затем

@transitionTo.apply(@, args) 

Я не пробовал это, но я думаю, что-то подобное, что может работать.

+0

Что делать, если @modelFor возвращает неопределенное значение/модель еще не была создана/загружен. Мое использование для этого - это переход на логин, если пользователь не аутентифицирован. После входа в систему они должны быть направлены обратно на маршрут, на котором они были. Если пользователь приземляется на маршрут, к которому у них нет доступа, то URL-адрес будет полностью построен с динамическими элементами, но отдельные модели не загружаются, потому что хранилище данных возвращает 403. –

+0

ммм ... да, это жесткий. Мне скоро понадобится этот конкретный сценарий и он будет работать над решением. Я вернусь к тебе, когда решишь. –

+0

Да, в прошлом я решил это по-другому, но в нем не было маршрута для состояния входа и никогда не переходило в состояние входа. Но, похоже, для каждого государства, как правило, «нужны» маршруты, поэтому я пытаюсь это сделать. –

0

Один из способов решить это в моем приложении состоял в том, чтобы просто использовать window.location.pathname вместо того, чтобы полагаться на переменную routeName. Я сериализовался до localStorage, поэтому было проще просто сохранить весь путь, а не пучок объектов.

@pathname = window.location.pathname 

, а затем, позже:

@transitionTo(@pathname) 
Смежные вопросы