2014-09-19 5 views
5

Есть ли способ получить предыдущее расположение страницы, прежде чем перейти на следующую страницу в IronRouter?Предыдущая страница на IronRouter

Есть ли событие, которое я могу использовать для получения этой информации?

Заранее спасибо.

+0

Вы можете использовать API истории: http: /stackoverflow.com/questions/13298743/history-api-javascript-pushstate-get-previous-url –

ответ

3

Вы можете добиться желаемого поведения с помощью крючков. не

// onStop hook is executed whenever we LEAVE a route 
Router.onStop(function(){ 
    // register the previous route location in a session variable 
    Session.set("previousLocationPath",this.location.path); 
}); 

// onBeforeAction is executed before actually going to a new route 
Router.onBeforeAction(function(){ 
    // fetch the previous route 
    var previousLocationPath=Session.get("previousLocationPath"); 
    // if we're coming from the home route, redirect to contact 
    // this is silly, just an example 
    if(previousLocationPath=="/"){ 
    this.redirect("contact"); 
    } 
    // else continue to the regular route we were heading to 
    this.next(); 
}); 

EDIT: это с помощью iron:[email protected]

9

Поскольку Железный маршрутизатор использует обычный History API, вы можете просто использовать обычный метод JS:

или

history.back(); 

Редактировать: или проверить предыдущий путь, не следуя его:

document.referrer; 

+0

'document.referrer' предоставит вам только начальное местоположение, откуда вы пришли, оно не обновляется t он API истории HTML5. – saimeunt

+0

Этот метод имеет проблему с sAlert, если вы хотите сохранить сообщение для следующего маршрута – Kostanos

+0

, этот метод также выполняет обратную передачу – WtFudgE

1

Извинения для натыкаясь старую нить, но хорошо, чтобы эти вещи ответить дата saimeunt превыше теперь осуждается, как this.location.path больше не существует в железном Router так должно напоминать что-то вроде ниже:

Router.onStop(function(){ Session.set("previousLocationPath",this.originalUrl || this.url); });

Или, если у вас установлен сеанс JSON (см Session JSON)

Router.onStop(function(){ Session.setJSON("previousLocationPath",{originalUrl:this.originalUrl, params:{hash:this.params.hash, query:this.params.query}}); });

только предостережений с Thisis, что первая страница будет всегда населяет URL-адрес поле (this.url и this.originalUrl, кажется, нет никакой разницы между ними) с полной URL (http://...) В то время как каждый из последующих страниц только журналы относительный домен, т. е./home без корневого url, не уверен, является ли это предполагаемым поведением или нет из IR, но в настоящее время это полезный способ определить, была ли это загрузка первой страницы или нет.

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