iron:路由器Meteor如何在不更改url的情况下更改路由(保存历史记录中的状态)

时间:2014-11-16 14:38:31

标签: meteor browser-history iron-router

我正在开发meteor applicaton。对于路由,我使用的是iron:router。 我正在通过更改会话变量来更改一些模板。

有没有办法在不更改网址的情况下用户获取浏览器历史记录中的条目,使用浏览器返回会话变量会更改回来?

我的问题是:一些测试版测试人员测试了该应用,并尝试使用浏览器后退按钮关闭他们打开的一些叠加层。

1 个答案:

答案 0 :(得分:0)

我不确定我100%理解你的问题。但听起来你想根据特定路线将会话变量设置为特定值来控制叠加的状态?

如果是这种情况,最好的办法是使用onBeforeAction hook

以下是使用Route Controller

执行此操作的方法
PostController = RouteController.extend({
  waitOn: function () {},

  data: function () {},

  onBeforeAction () {
    Session.set('someSession', 'someValue');
  },

  action: function () {
    this.render();
  }
}); 

如果您不想使用路径控制器,您还可以添加一个钩子函数并指定hook should run on的路径。

修改

Router.onBeforeAction(function () {
  Session.set('showOverlay', false);
  this.next();
});

您还可以在挂机前指定您不想要的路线:

Router.onBeforeAction(function () {
  Session.set('showOverlay', false);
  this.next();
}, { except: ['admin'] });