2014-09-19 12 views
5

IronRouter'da bir sonraki sayfaya gitmeden önce önceki sayfa konumunu almanın bir yolu var mı?Önceki sayfa konumu IronRouter hakkında

Bu bilgileri almak için kullanabileceğim bir etkinlik var mı?

Şimdiden teşekkürler.

+0

Geçmiş API'sini kullanabilirsiniz: http://stackoverflow.com/questions/13298743/history-api-javascript-pushstate-get-previous-url –

cevap

3

İstediğiniz davranışı kanca kullanarak gerçekleştirebilirsiniz.

// 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(); 
}); 

DÜZENLEME: Bu yukarıdaki artık kullanım dışı kalmıştır tarih saimeunt cevabı bunları tutmak için eski bir iş parçacığı çarpma için iron:[email protected]

9

Demir Yönlendirici zamanki Geçmiş API kullanır olduğundan, sadece düz JS yöntemi kullanabilirsiniz:

veya

history.back(); 

Edit: veya izleyerek olmadan önceki yolunu kontrol etmek:

document.referrer; 

+0

'document.referrer' yalnızca sizden geldiğiniz başlangıç ​​noktasını verecektir, t tarafından güncellenmez. o HTML5 geçmiş API'sı. – saimeunt

+0

Bu yöntem, sAlert ile sorun var – Kostanos

+0

Bir sonraki yol için iletiyi korumak istiyorsanız, bu yöntem de bir geri gönderme yaparsa, – WtFudgE

1

Özür dilemek kullanarak ama iyi this.location.path artık Demir Router var

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

Yoksa oturumu JSON yüklü olup olmadığını

( Session JSON bakınız): bu yüzden aşağıda gibi bir şey benzer olmalıdır ilk sayfa daima url alanları doldurmak edeceğini Thisis ile

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

Sadece uyarılar tam url ile (this.url ve this.originalUrl aralarında hiçbir fark var gibi görünüyor) (http://...) sadece günlükleri sonraki her sayfada iken göreli etki alan adı ie/home root url'sine sahip değilse, bu hedefe yönelik bir davranış değilse veya IR'den değilse emin olun, ancak şu anda bu ilk sayfa yükü olup olmadığını belirleme konusunda yararlı bir yöntemdir