Iron Router上的上一页位置

时间:2014-09-19 09:21:33

标签: meteor iron-router

有没有办法在转到IronRouter的下一页之前获取上一页的位置?

是否有可用于获取此信息的事件?

提前致谢。

3 个答案:

答案 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的预期行为,但它目前是确定这是否是第一页加载的有用方法