有没有办法在转到IronRouter的下一页之前获取上一页的位置?
是否有可用于获取此信息的事件?
提前致谢。
答案 0 :(得分:9)
由于Iron Router使用通常的History API,您只需使用普通的JS方法:
history.go(-1);
或
history.back();
编辑:或检查上一条路径而不遵循它:
document.referrer;
击> <击> 撞击>
答案 1 :(得分: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();
});
编辑:这是使用iron:router@1.0.0-pre1
答案 2 :(得分:1)
抱怨旧线程,但保持这些东西最新saimeunt上面的答案的道歉现在已弃用,因为在Iron Router中不再存在this.location.path所以应该类似于下面的内容:
Router.onStop(function(){
Session.setJSON("previousLocationPath",{originalUrl:this.originalUrl, params:{hash:this.params.hash, query:this.params.query}});
});
或者如果您安装了会话JSON(请参阅Session JSON)
function validate(){
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if ( username == "username1" && password == "password1"){
alert ("Login successfully");
}
else{
alert("Invalid username or password");
}
return false;
}
只有注意这一点,第一页将始终填充url字段(this.url和this.originalUrl,它们之间似乎没有区别)与完整网址(http://..。),而每个后续页面只记录相对域即/ home没有根URL不确定这是否是来自IR的预期行为,但它目前是确定这是否是第一页加载的有用方法